{"version":3,"sources":["webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/lift.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","webpack:///./node_modules/@bluekiri/alexandria/helpers/domHelpers.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/Observable.js","webpack:///./node_modules/@bluekiri/alexandria/helpers/dataHelpers.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/config.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/Subject.js","webpack:///./node_modules/@bluekiri/alexandria/core/ViewHelpers.js","webpack:///./node_modules/@bluekiri/alexandria/helpers/state.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/args.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/async.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/empty.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/map.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/filter.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/from.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/timer.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/config.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/constants/tooltip/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/reduce.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/take.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tooltip/template.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/Notification.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/concat.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/constants/icons/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/timeout.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/multicast.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/connect.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/fromSubscribable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/tooltip/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image-rxjs/template.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/concatMap.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tooltip/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/constants/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/Immediate.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/queue.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isObservable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/lastValueFrom.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/bindCallback.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/bindNodeCallback.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/defer.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/connectable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/generate.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/iif.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/merge.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/never.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/pairs.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/partition.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/range.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/using.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/partition.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/race.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/refCount.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/audit.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/toArray.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/find.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/takeLast.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/raceWith.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/sample.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/share.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/throttle.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/AsyncSubject.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/of.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/zip.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isDate.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/constants/index.js","webpack:///./node_modules/@bluekiri/alexandria/helpers/array.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/Scheduler.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/button-rxjs/template.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input-rxjs/template.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select-rxjs/template.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/auditTime.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/buffer.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/catchError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/combineAll.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/concatWith.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/count.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/debounce.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/delay.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/distinct.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/elementAt.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/endWith.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/every.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/exhaust.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/expand.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/finalize.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/findIndex.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/first.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/groupBy.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/last.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/materialize.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/max.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/flatMap.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/min.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNextWith.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/pluck.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/publish.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/publishLast.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/repeat.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/retry.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/scan.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/single.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/skip.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/skipLast.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/startWith.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/switchAll.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/switchScan.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/tap.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/timestamp.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/window.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/windowCount.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/windowTime.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/zipAll.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/zipWith.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tabs-rxjs/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/throwError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/interval.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/onErrorResumeNext.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/observable/race.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/concat.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/merge.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/zip.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/createObject.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/util/not.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/floating-header/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal-rxjs/template.js","webpack:///./node_modules/@bluekiri/alexandria/helpers/sanitize.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/helpers/sanitize.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/groups/utils/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/validations/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/ui/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/toast/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/toast/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/floating-header/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria/core/PriceFormatter.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tooltip/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tooltip/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/tooltip/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/events/resize.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/items/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/loader-banner/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/loader-banner/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/contact/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel-rxjs/template.js","webpack:///./node_modules/@logitravel/alex-comp-cru/services/models.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/flights-included/resident/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/ages/age/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/remove-room/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/animations/collapse.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/services/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/agent-carousel/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/agent-carousel/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/breadcrumbs-id-cru/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tabs-rxjs/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/tabs-route/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/itinerary-dyn/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/itinerary-dyn/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information-carousel/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information-carousel/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-section/client/js/store/actions.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/video-rxjs/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/video-rxjs/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/package-item/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/banners-mask/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/toast-async/client/js/store/actions.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/components.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/floating-header/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/floating-header/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/floating-header/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/floating-header/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/floating-header/client/js/button/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria/core/Env.js","webpack:///./node_modules/@bluekiri/alexandria/core/utils/texts.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js/loader/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/floating-header/client/js/scroll/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/floating-header/client/js/quote/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/card-request/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/footer/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/footer/favourite.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/services/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/footer/share.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/client/js/modal/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/loader/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/client/js/services/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/client/js/tooltip/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/helpers/email.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/share-rxjs/template.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/aside/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/tooltip/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tooltip/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tooltip/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tooltip/client/js/popper/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/templates/tooltip.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/client/js/price-tooltip/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-request/templates/price-tooltip.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/circuit-content-cru/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/store/reducer-tooltip.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/store/validations.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/groups/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/tooltip/category/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/tooltip/departure-date/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/tooltip/advantage/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/tooltip/just-married/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/tooltip/offer/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/tooltip/fees/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/tooltip/contact/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/groups/collapse/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/carousel/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js/vendor/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/carousel/year/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/dates/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/groups/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/groups/collapse/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/mapper/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/departures/prices/items/loader/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/loader-banner/template.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/loader-banner/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/loader-banner/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/loader-banner/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/message/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/message/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/tooltip-clicked/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/contact/name/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/validations/email/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/validations/name/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/contact/surname/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/contact/phone/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/contact/email/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/contact/checkboxes/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/services/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/contact/mapper/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/utils/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/groups/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/groups/crudyn/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/groups/group/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/groups/group/item/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/groups/highlight/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/groups/multicabin/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/prices/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/prices/departure/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/prices/departure/crudyn/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/prices/departure/group/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/prices/departure/group/item/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/prices/departure/highlight/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/departures/prices/departure/multicabin/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/prices-min/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/prices-min/information/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/prices-min/prices/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/prices-min/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/prices-min/information/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/constants/prices-min/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/constants/prices-min/image/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/constants/prices-min/svg/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/prices-min/prices/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/categories/prices-min/prices/price/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/constants/prices-min/bar/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/advantages/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/categories/mapper/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/flights-included/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/loader/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/utils/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/flights-included/resident/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/template.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/flights-included/other-airports/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/suggestions/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/templates/tooltipPanel.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/suggestions/keyboard.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/helpers/dom.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/helpers/data.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/helpers/array.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/input/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/loader/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/services/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/flights-included/other-airports/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/template.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/rooms/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/buttons/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/ages/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/customer-card/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/customer-surname/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/discount-code/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/health-care/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/just-married/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/passengers/informations/information/passengers/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/ages/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/ages/age/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/customer-card/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/customer-surname/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/discount-code/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/health-care/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/just-married/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/passengers/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/informations/information/remove-room/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/nights/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/passengers/nights/nights/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/client/js/modal/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/circuit-content-cru/templates/banners/modal/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/main-request-cru/client/js/button-important-info/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/origin-list/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/origin-list/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/origin-list/client/js/config.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/origins/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/top/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/languages/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/helpers/images.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/select/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/header-byl/client/js/nav/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/footer-byl/client/js/index.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/components/footer-byl/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/top-button/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/top-button/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/top-button/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/cruises-certifications/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/click-to-call/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel/client/js/vendor/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/carousel/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/agent-carousel/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/modal/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria/helpers/store.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/image/client/js/config.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/click-to-call/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/breadcrumbs-id-cru/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/breadcrumbs-id-cru/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/breadcrumbs-id-cru/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/breadcrumbs-id-cru/client/js/form/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/breadcrumbs-id-cru/client/js/services/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/breadcrumbs-id-cru/client/js/form/mapper/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/breadcrumbs-id-cru/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/newsletter-agent/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/newsletter-subscription/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/checkbox/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/checkbox/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/newsletter-subscription/regexpEmail.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/carousel-banner/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/product-card-carousel/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/product-card-t2/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/product-card-t2/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/product-card-carousel/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/vertical-banner-mask/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/carousel-banner/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/tabs-route/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tabs-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tabs-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tabs-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tabs-rxjs/client/js/navigation/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/tabs-rxjs/client/js/images/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/tabs-route/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/tabs-route/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/tabs-route/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/itinerary-dyn/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/itinerary-dyn/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/itinerary-dyn/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/itinerary-dyn/client/js/collapse/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-section/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information-carousel/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information-carousel/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information-carousel/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information-carousel/client/js/carousel/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information-carousel/client/js/cards/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information/client/js/button/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information/client/js/modal/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/card-information/client/js/image/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-section/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-section/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-section/client/js/gallery/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/template.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/photoswipe/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/image/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/video/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/video-rxjs/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/video-rxjs/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/video-rxjs/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/video-rxjs/template.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-section/constants.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/ship-section/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/advantages-promotions/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/advantages-promotions/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/package-item-section/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/package-item/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/package-item/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/package-item/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/package-item/client/js/origins/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/package-item/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/package-item-section/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/banners-mask/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/banners-mask/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/banners-mask/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/banners-mask/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/toast-async/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/toast-async/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/toast-async/client/js/store/reducer.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/toast-async/client/js/toast/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/toast/template.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/toast/client/js/index.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/toast/client/js/prototype.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/toast/client/js/store/reducer.js","webpack:///./node_modules/@bluekiri/alexandria-contrib-components/components/toast/client/js/toast/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/toast-async/client/js/config.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/information-carousel/client/js/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/information-carousel/client/js/prototype.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/information-carousel/client/js/carousel/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/information-carousel/client/js/image/index.js","webpack:///./node_modules/@logitravel/alex-comp-cru/components/information-carousel/client/js/config.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/ajax/getXHRResponse.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/ajax/AjaxResponse.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/ajax/errors.js","webpack:///./node_modules/@logitravel/alex-contrib-bylogi/node_modules/rxjs/dist/esm5/internal/ajax/ajax.js"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","pop","push","__values","o","m","__read","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","__await","__asyncGenerator","asyncIterator","q","a","resume","fulfill","settle","shift","__asyncValues","SuppressedError","createOperatorSubscriber","destination","onNext","onComplete","onError","onFinalize","OperatorSubscriber","_super","shouldUnsubscribe","_this","_next","err","_error","unsubscribe","_complete","_a","closed_1","closed","hasLift","source","lift","operate","init","liftedSource","innerFrom","input","obj","subscriber","obs","subscribe","array","complete","promise","fromAsyncIterable","iterable","e_1","iterable_1","iterable_1_1","e_1_1","return","readableStream","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_2","e_2_1","_b","process","catch","module","exports","elementExist","element","document","querySelector","toNode","html","DOMParser","parseFromString","childNodes","isFunction","Observable","_subscribe","operator","observable","observerOrNext","isObserver","add","_trySubscribe","sink","forEach","promiseCtor","getPromiseCtor","pipe","operations","_i","toPromise","x","prepareLink","link","key","name","content","href","title","target","mail","prepareDataConfig","data","id","latitude","longitude","max","min","selected","token","type","items","defaultDate","preparePrice","price","currency","prepareLinks","links","temp","map","item","prepareImage","image","resize","tempResize","operation","suboperation","height","width","quality","src","alt","alternative","carousel","resizeData","formatDate","date","Date","rDate","getDate","rMonth","getMonth","getFullYear","randomId","Math","floor","random","addStyle","styles","css","config","addData","dataValue","component","start","imgAlternative","isPassengers","isJustMarried","isHealthCare","isCustomerCard","isCustomerSurname","isDiscountCode","isAge","isRemoveRoom","isCategories","isNights","isBanners","isBannersFull","isVisible","isLowest","isActive","isExpanded","isHidden","modal","readMore","tooltipFee","contactInputName","contactInputSurname","contactInputEmail","contactInputPhone","checkbox","counter","origin","resident","otherAirports","healthCare","justMarried","passengers","customerCard","customerSurname","discountCode","nights","age","removeRoom","pricesMin","advantages","tooltip","tooltipClicked","departures","modalImage","otherAirportsDropdownValue","noop","identity","Subject","currentObservers","observers","isStopped","hasError","thrownError","subject","AnonymousSubject","_throwIfClosed","_c","defineProperty","get","enumerable","configurable","_checkFinalizedStatuses","_innerSubscribe","asObservable","markdown","PriceFormatter","Env","textUtils","context","format","formatPrice","formatWithForcedDecimals","debug","msg","console","log","renderImage","imageResizer","asset","path","protocol","startsWith","join","staticUrl","file","versionTimestamp","trimmedFile","replace","isDevelopment","NODE_ENV","isStaging","assetUrl","getStaticsBaseUrl","viewport","viewportWidth","viewportHeight","finalWidth","finalHeight","options","undefined","isDesktop","device","isTablet","isMobile","dateFormat","app","str","out","toHTML","substring","icon","assetsPath","devHost","isLocal","PORT","env","url","URL","cdnBase","mscdn","regex","finalSource","match","exec","relative","params","prepareSrc","querySeparator","indexOf","Store","reducers","initialState","subscribers","state","reduce","fn","filter","dispatch","action","keys","acc","val","addReducers","select","last","arr","popResultSelector","args","popScheduler","popNumber","defaultValue","Subscription","initialTeardown","_parentage","_finalizers","empty","errors","isArray","_parentage_1","_parentage_1_1","remove","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","teardown","_hasParent","_addParent","parent","includes","_removeParent","EMPTY","EMPTY_SUBSCRIPTION","isSubscription","asyncScheduler","async","selector","configuration","instance","hooks","img","figcaption","dataset","JSON","parse","executeSchedule","parentSubscription","scheduler","work","delay","repeat","scheduleSubscription","schedule","emptyScheduled","mergeMap","project","resultSelector","concurrent","Infinity","ii","DESTROY","ADD_ROOM","SET_ROOMS","WATCH_FEE","types","DELETE_ROOM","SET_ORIGIN","SET_NIGHTS","SET_RESIDENT","SET_INFORMATION","CHANGE_PASSENGERS","SELECT_DATE_PRICE_MIN","COLLAPSE_GROUP","EXPAND_GROUP","SET_CATEGORIES_PRICES","OPEN_TOOLTIP","CLOSE_TOOLTIP","TOGGLE_TOOLTIP_CLICKED","UNWATCH_FEE","WATCH_CONTACT_TOOLTIP","UNWATCH_CONTACT_TOOLTIP","SET_CONTACT","VALIDATE_CHECKBOXES","SAVE_CHECKBOX","actions","destroy","addRoom","deleteRoom","payload","setRooms","setOrigin","setNights","setResident","setInformation","changePassengers","selectDatePriceMin","collapseGroup","expandGroup","setCategoriesPrices","openTooltip","closeTooltip","toggleTooltipClick","watchFee","unwatchFee","watchContactTooltip","unwatchContactTooltip","setContact","validateCheckboxes","saveCheckbox","index","predicate","arrRemove","splice","createErrorClass","createImpl","ctorFunc","Error","stack","EmptyError","message","timer","dueTime","intervalOrScheduler","intervalDuration","due","now","mapOneOrManyArgs","callOrApply","argsOrArgArray","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","COMPLETE_NOTIFICATION","createNotification","kind","Subscriber","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_bind","Function","bind","ConsumerObserver","partialObserver","handleUnhandledError","SafeSubscriber","context_1","reportUnhandledError","notification","timeoutProvider","setTimeout","TOOLTIP_CATEGORY","TOOLTIP_DEPARTURE_DATE","TOOLTIP_HIGHLIGHT","TOOLTIP_IMAGE_WIDTH","TOOLTIP_IMAGE_HEIGHT","TOOLTIP_ADVANTAGE","TOOLTIP_JUST_MARRIED","TOOLTIP_OFFER","TOOLTIP_FEES","TOOLTIP_CONTACT","accumulator","seed","DISPLAY","HIDE","RESET_STATUS","SET_ERROR","SET_VALID","SET_OPTION","SET_OPTIONS","SELECT_OPTION","ENABLE","DISABLE","TOGGLE_LOADING","display","hide","resetStatus","setError","setValid","setOption","setOptions","selectOption","enable","disable","toggleLoading","take","count","seen","switchMap","innerSubscriber","isComplete","checkComplete","innerIndex","outerIndex","innerValue","SET_UI_STATE","TOGGLE_ACTIVE","SET_VALUE","CHANGE_VALUE","RESET","setUiState","toggleActive","setValue","changeValue","reset","negative","placement","offset","literals","dataType","trim","stringify","observeOn","subscribeOn","mergeAll","defaultIfEmpty","hasValue","throwIfEmpty","errorFactory","defaultErrorFactory","AsyncScheduler","SchedulerAction","_active","flush","execute","Action","intervalProvider","setInterval","handler","timeout","delegate","clearInterval","handle","AsyncAction","pending","recycleAsyncId","requestAsyncId","_id","_scheduler","_execute","_delay","errorValue","errored","events","selectionRange","withBorder","valid","active","hidden","disabled","loading","withLabel","multiple","hasItems","NotificationKind","Notification","observe","observer","observeNotification","do","nextHandler","errorHandler","completeHandler","accept","nextOrObserver","toObservable","createNext","createError","createComplete","completeNotification","_d","ICON_PLUS","ICON_MINUS","ICON_MAGNIFIER","ICON_STAR_FILLED","ICON_WIFI","ICON_CHECK","ICON_PLANE","ICON_INFO","TimeoutError","info","schedulerArg","first","each","with","_with","timeoutErrorFactory","meta","originalSourceSubscription","timerSubscription","lastValue","startTimer","concatAll","multicast","subjectOrSubjectFactory","subjectFactory","connector","DEFAULT_CONFIG","connect","subscribable","fns","pipeFromArray","prev","ConnectableObservable","_subject","_refCount","_connection","getSubject","_teardown","connection","subject_1","refCount","isScheduler","errorContext","cb","isRoot","errorThrown","captureError","Image","Tooltip","TooltipTemplate","destroyTooltip","panel","parentNode","removeChild","addTooltip","node","template","createTooltip","appendChild","trigger","initTooltip","ViewHelpers","buildResizeConfig","buildSrc","outsider","buildAlternative","lazySrc","getImageAttr","isLazy","renderLazyImage","srcParam","renderNotLazyImage","renderLink","hasAllAirpots","header","keyed","suggestion","panelContent","suggestionsList","concatMap","readableStreamLikeToAsyncGenerator","reader","getReader","read","releaseLock","isReadableStreamLike","SET","INCREMENT","DECREMENT","increment","decrement","set","CLEAR","CLOSE_SUGGESTIONS","OPEN_SUGGESTIONS","SET_QUERY","SET_SUGGESTIONS","SYNC_VALUE","clear","closeSuggestions","openSuggestions","setQuery","setSuggestions","syncValue","APPENDTOPARENT","GEOLOCATION","ICONS","AER","BUS","CIU","EST","FLIGHTS_COMPANY","HOT","ISL","PDI","PUE","ZON","KEY_ARROW_DOWN","KEY_ARROW_UP","KEY_ENTER","KEY_ESC","KEY_TAB","LIMIT","MAX","NO_OPEN_SUGGESTIONS_KEYS","PLACEMENT","SUGGESTIONS_KEYS","THRESHOLD","LOADER_TEMPLATE","performanceTimestampProvider","performance","animationFrameProvider","callback","request","requestAnimationFrame","cancel","cancelAnimationFrame","timestamp","animationFrames","timestampProvider","animationFramesFactory","DEFAULT_ANIMATION_FRAMES","provider","run","elapsed","resolved","nextHandle","activeHandles","findAndClearHandle","setImmediate","clearImmediate","immediateProvider","AsapAction","_scheduled","asapScheduler","AsapScheduler","flushId","asap","QueueAction","queueScheduler","QueueScheduler","queue","AnimationFrameAction","animationFrameScheduler","AnimationFrameScheduler","animationFrame","VirtualTimeScheduler","schedulerActionCtor","maxFrames","frame","frameTimeFactor","VirtualAction","Number","isFinite","sort","sortActions","isObservable","lastValueFrom","hasConfig","_value","_hasValue","firstValueFrom","bindCallbackInternals","isNodeStyle","callbackFunc","AsyncSubject","uninitialized","subs","isAsync_1","isComplete_1","results","bindCallback","bindNodeCallback","defer","observableFactory","resetOnDisconnect","connectable","forkJoin","argsArgArrayOrObject","sources","values","remainingCompletions","remainingEmissions","_loop_1","sourceIndex","createObject","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","eventName","addEventListener","removeEventListener","isEventTarget","methodName","addListener","removeListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","on","off","isJQueryStyleEventEmitter","isArrayLike","subTarget","fromEventPattern","addHandler","removeHandler","retValue","generate","initialStateOrOptions","condition","iterate","resultSelectorOrScheduler","gen","scheduleIterable","iif","trueResult","falseResult","merge","NEVER","never","pairs","entries","partition","not","range","end","using","resourceFactory","resource","race","raceWith","refCounter","sharedConnection","conn","audit","durationSelector","durationSubscriber","endDuration","cleanupDuration","combineLatestAll","arrReducer","toArray","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","mapTo","distinctUntilChanged","comparator","keySelector","defaultCompare","previousKey","currentKey","exhaustAll","exhaustMap","innerSub","outerValue","find","createFind","emit","findIndex","takeLast","buffer","buffer_1","buffer_1_1","otherSources","sample","notifier","share","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","dest","handleReset","onSubscriber","throttle","leading","trailing","sendValue","throttled","endThrottling","send","cleanupThrottling","startThrottle","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","_buffer","_infiniteTimeWindow","_trimBuffer","subscription","copy","adjustedBufferSize","_isComplete","of","combineLatest","observables","combineLatestInit","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","zip","buffers","completed","every","some","UnsubscriptionError","toString","dateTimestampProvider","isValidDate","isNaN","mergeInternals","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","outerNext","doInnerSub","innerComplete","bufferedValue","SET_DATA","CLOSE_SHARE","OPEN_SHARE","ADD_FAVOURITE","DELETE_FAVOURITE","DESTROY_BUTTON","OPEN_TOOLTIP_FLIGHT_HOTEL","CLOSE_TOOLTIP_FLIGHT_HOTEL","setData","closeShare","openShare","addFavourite","deleteFavourite","destroyButton","openTooltipFlightHotel","closeTooltipFlightHotel","vertical","submit","visible","emailShare","emailModal","emailSubmit","emailInput","email","facebook","twitter","whatsapp","swiper","default","CRUISE_CODE","NUM_GUESTS","TOTAL_CABINS","PAX_CONFIG","TC","BK_DEP","BK_HONEY","MC_HONEY","BK_HC","MC_HC","BK_CLUBNAME","MC_CLUBNAME","BK_CLUBSURNAME","MC_CLUBSURNAME","BK_PAXES","ACCOMMODATIONS","BK_CAT","BK_ORIGCODE","COUPON_CODE","MC_COUPON_CODE","crudyn","ORIGIN_CIR","DAY","RESIDENT","HMOON","CLUB_CODE","CLUB_NAME","ALTERNATIVE","ORIGIN","ALTERNATIVE_NIGHTS","fill","groupBy","list","Map","collection","sortByKey","sortByKeyLesser","containsArray","superset","subset","Scheduler","ArgumentOutOfRangeError","anchorFlightHotel","mapImage","shipImage","companyImage","cruDynImage","promoImage","fav","quote","logo","ship","right","button","base","heart","heartFilled","starFilled","logoConfig","mapConfig","mapRiverConfig","shipConfig","Button","hasClose","close","sanitizeSingleQuote","hasLoader","renderIcon","getStyles","isAlternative","placeholder","maxlength","addDepartures","initDepartures","destroyDepartures","addPricesMin","initPricesMin","destroyPricesMin","initAdvantages","Services","Mapper","getDepartures","getModel","endpoints","Name","Arguments","initCategories","categoriesPrices","multicabin","categories","store","reactions","changePassengersFromCategories","rooms","ages","informations","ExcludedBabies","cur","destroyCategories","TOGGLE","toggle","sanitizeObject","auditTime","duration","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","record","startBuffer","record_1","bufferTimeSubscriber","recordsCopy","recordsCopy_1","recordsCopy_1_1","bufferToggle","openings","closingSelector","openValue","closingSubscription","bufferWhen","closingSubscriber","openBuffer","catchError","handledResult","syncUnsub","combineAll","combineLatestWith","concatMapTo","innerObservable","concatWith","total","debounce","debounceTime","activeTask","lastTime","emitWhenIdle","targetTime","dematerialize","distinct","flushes","distinctKeys","Set","has","distinctUntilKeyChanged","compare","elementAt","hasDefaultValue","endWith","exhaust","finalize","elementOrOptions","groups","notify","handleError","consumer","activeGroups","teardownAttempted","groupBySourceSubscriber","key_1","group_1","grouped","groupSubject","groupSubscriber","durationSubscriber_1","delete","isEmpty","materialize","comparer","flatMap","mergeMapTo","mergeScan","mergeWith","onErrorResumeNextWith","nextSources","onErrorResumeNext","pairwise","hasPrev","pluck","properties","currentProp","publish","publishBehavior","initialValue","publishLast","publishReplay","windowTime","selectorOrScheduler","countOrConfig","sourceSub","soFar","resubscribe","notifierSubscriber_1","subscribeToSource","repeatWhen","completions$","syncResub","isNotifierComplete","isMainComplete","subscribeForRepeatWhen","retry","configOrCount","resetOnSuccess","subscribeForRetry","resub_1","retryWhen","errors$","subscribeForRetryWhen","sampleTime","period","scan","sequenceEqual","compareTo","aState","bState","isEqual","createSubscriber","selfState","otherState","sequenceEqualSubscriber","shareReplay","configOrBufferSize","single","singleValue","seenValue","skip","skipLast","skipCount","ring","valueIndex","oldValue","skipUntil","taking","skipSubscriber","skipWhile","startWith","switchAll","switchMapTo","switchScan","takeUntil","takeWhile","inclusive","tap","tapObserver","isUnsub","throttleTime","duration$","timeInterval","interval","TimeInterval","timeoutWith","withObservable","window","windowBoundaries","windowSubject","windowCount","windowSize","startWindowEvery","startEvery","windows","windows_1","windows_1_1","c","window_2","windowTimeSpan","windowCreationInterval","maxWindowSize","windowRecords","restartOnClose","closeWindow","startWindow","window_1","loop","terminate","windowToggle","windowsCopy","windowsCopy_1","windowsCopy_1_1","windowWhen","openWindow","withLatestFrom","inputs","len","otherValues","ready","zipAll","zipWith","otherInputs","navigation","video","ObjectUnsubscribedError","BehaviorSubject","getValue","throwError","errorOrErrorFactory","NotFoundError","SequenceError","subscribeNext","nextSource","raceInit","subscriptions","scheduleAsyncIterable","scheduled","isInteropObservable","scheduleObservable","scheduleArray","isPromise","schedulePromise","isAsyncIterable","isIterable","scheduleReadableStreamLike","clearTimeout","createInvalidObservableTypeError","getPrototypeOf","objectProto","getKeys","first_1","pred","joinAllInternals","joinFn","scanInternals","hasSeed","emitOnNext","emitBeforeComplete","hasState","SET_CONTENT","SET_ICON","setContent","setIcon","firstButton","fixed","load","loaded","ENABLE_EMAIL","OPEN_MODAL","CLOSE_MODAL","CLOSE_LEGAL","OPEN_LEGAL","enableEmail","openModal","closeModal","closeLegal","openLegal","ButtonTemplate","footer","closeRender","text","objString","setActive","groupEl","classList","groupActive","unsetActive","expandAndActive","departureDate","categoryGroupCode","multicabine","departuresEls","querySelectorAll","departureEl","departure","groupExpanded","groupElExpanded","checkActive","slideTo","isValidEmail","isValidName","updateUI","valueEl","innerText","OPEN_LANG","CLOSE_LANG","openLang","closeLang","languages","logoFlag","logoLogi","companyLogo","flag","certificateImg","secondaryImg","selectOrigin","TOGGLE_COLLAPSE","SET_COLLAPSE","toggleCollapse","setCollapse","iconName","fadeIn","fadeOut","intervalsOpen","intervalsClose","delays","CLOSE","TOGGLE_FIXED","ACTIVE_BUTTON","SCROLL_TO","LOCK_SCROLL","UNLOCK_SCROLL","toggleFixed","activeButton","scrollTo","lockScroll","unlockScroll","currencySymbols","USD","CAD","BRL","GBP","EUR","MXN","RUB","AED","currencyPositionsByMarket","br","us","gb","it","mx","ae","ca","currencyPositionsByLanguage","en","getDecimalTemplate","decPart","decimalCharacter","reverseString","split","reverse","useMarket","currencyPosition","Market","market","getLanguage","lang","decimalPosition","round","currencySymbol","absValue","abs","priceParts","intPart","formatPriceWithThousandsSeparator","roundDecimals","numberGroupSeparator","es","pt","de","fr","fi","se","ve","ru","he","tr","ua","intPartWithSeparation","Language","language","SET_SRC","setSrc","modalVisible","Category","DepartureDate","Advantage","JustMarried","Offer","Fees","Contact","category","advantage","resizeWindow","navigator","userAgent","appVersion","evt","createEvent","initUIEvent","dispatchEvent","Event","slide","DateTime","getConstatsByType","addLoader","addMessage","sendContactData","hasAllContactData","hasErrorContactData","generateForm","cleanInputs","isValid","requestCustomerData","isPlatformModeError","offsetTop","checkboxes","validations","areCheckboxesValid","splitted","checkboxName","checkboxChecked","firstElementChild","checked","chkb","required","contactFrame","top","getBoundingClientRect","scrollY","offsetHeight","behavior","checkContacts","getFormDefault","categoryCode","requestForm","Method","Url","fromISO","toFormat","room","getValuesDefault","Body","form","getFormCrudyn","initItems","prices","pricesItemsClick","event","stopPropagation","closest","el","pricesItemsMouseover","offerDescriptionText","offerDescription","pricesItemsMouseout","destroyItems","imgConfig","addTooltipClicked","destroyTooltipClicked","initName","destroyName","hasErrorName","initSurname","destroySurname","hasErrorSurname","initPhone","destroyPhone","hasErrorPhone","initEmail","destroyEmail","hasErrorEmail","initCheckboxes","destroyCheckboxes","mapArguments","initContact","inst","contactLink","toggleContactTooltip","dataProtection","destroyContact","sendContactDataService","registerCustomer","contactData","checks","fields","mandatory","hasPagination","hasNavigation","hasAutoplay","hasBreakpoints","renderNavigation","fromFetch","modelController","modelSignal","modelAjaxEndpoint","businessAreaName","BusinessAreaName","abort","AbortController","signal","method","headers","response","ok","json","statusText","endpoint","Checkbox","CheckboxAct","Resident","initResident","changeResident","addResident","destroyResident","Select","SelectCfg","jndex","ageLabel","importantInfoBtn","description","collapse","elem","sectionHeight","scrollHeight","elementTransition","style","transition","setAttribute","ajax","changeLanguage","code","session","parameterName","credentials","cache","Source","changeOrigin","originData","originAjax","contextData","baseUrl","CarouselClient","settings","busy","carouselPrototype","lazy","baseConfig","getInput","show","isSelectable","removeActive","setPairing","getLabel","onChange","onFocusIn","onFocusOut","onClick","autoSelect","setSelectionRange","bindEvents","domEvents","modalInStore","getStore","modalIsUnique","triggers","getTriggers","removeFromDom","newInstance","addTriggers","checkUniqueModal","c2cMode","queueCall","lineOfBusiness","isMulti","slidesPerView","slidesPerGroup","spaceBetween","breakpoints","480","991","1200","pagination","autoDom","agentReplace","agentId","sessionCode","phone","containerForm","agentCardNode","agentFormNode","agentForm","cardCarousel","submitButton","legalText","bgImg","bgImgConfig","CHANGE_TAB","SET_TAB","ENABLE_TAB","DISABLE_TAB","changeTab","setTab","enableTab","disableTab","card","CHANGE_IMAGE_MEDIA","changeImageMedia","size","SET_VIDEO","CREATE_PLAYER","setVideo","createPlayer","CLOSE_ORIGINS","OPEN_ORIGINS","closeOrigins","openOrigins","resolveComponents","getClickToCall","getToastAsync","publicPath","components","loader","IntersectionObserver","entry","intersectionRatio","unobserve","root","rootMargin","threshold","COMPONENTS","reducer","initFloatingHeader","initCardRequest","initCircuitContentCru","initBtnImportantInfo","setupStore","setupActions","setupReactions","FloatingHeader","floatingHeader","sticky","initButtons","initScroll","initQuote","isFixed","buttons","scrollTop","documentElement","isScrolling","scrolled","click$","initLoader","destroyLoader","innerHTML","className","removeAttribute","setupEvents","toLowerCase","tagAttributes","attributesArray","attributesObject","tagAttributesObject","getConfigPlaceholder","newConfig","vertical_spacing_top","vertical_spacing_bottom","class","setSpacingPlaceholder","bottom","verticalSpacingTop","verticalSpacingBottom","spacing","linkDataAtribute","dataAttributes","buildTags","tagsData","tag","attributes","content_tag","setConfigPlaceholder","spacingClass","classes","cutStringByWords","limit","splitWord","ellipsis","textWithSpace","trimmedString","substr","lastIndexOf","cutParagraphsByWords","paragraphs","paragraphsSize","paragraphsProcessed","wordsTotal","words","elementsToInclude","closeMardownInParagraphs","countStringWords","isLoading","removeLoader","onScroll$","isIntersecting","quoteBtn","CardRequest","cardRequest","moreAdvantages","clickAdvantagesAdvantages","flight","clickFlight","promotions","flightHotel","images","logoDyn","logo2","logoDyn2","promos","initImages","lazyLoad","status","startFooter","destroyFooter","initAside","addPriceTooltip","destroyPriceTooltip","advantagesMouseover","advantagesMouseout","subcriptions","promotionsMouseover","promotionsMouseout","flightAndHotel","flightHotelClick","location","flightHotelOver","priceTooltip","flightHotelOut","cruDyn","favorite","favourite","shareVisible","flightHotelTooltipVisible","initFavourite","destroyFavourite","initShare","destroyShare","favBtn","favoriteLabel","noFavoriteLabel","favouriteBoolean","added","deleted","Share","ShareCfg","ShareTemplate","shareTooltip","shareBtn","shareByLabel","viewportOffset","placementEl","offsetWidth","left","addModal","destroyModal","legal","Modal","ModalTemplate","Input","InputCfg","InputTemplate","isEmail","emailFormRender","emailPlaceholder","emailInputRender","emailSubmitRender","createModal","modalOpen","modalCloses","keyup$","emailSubmits","postEmail","MailErrorLabel","addMessageError","MailSuccessLabel","addMessageSuccess","modalDestroy","windowClick$","mergedClick$","keyCode","focusIn","HTMLInputElement","isText","focusOut","isButton","change","spc","sendMail","tooltipOpen","tooltipDestroy","EMAIL_REG","RegExp","test","emailLabel","emailRender","facebookLabel","facebookRender","whatsappLabel","whatsappRender","twitterLabel","twitterRender","aside","initPopper","destroyPopper","createPopper","popper","modifiers","subtitle","createPriceTooltip","initPriceTooltip","fromPriceLabel","toUpperCase","CounterAct","SelectAct","CircuitContentCru","CircuitContentCruActions","circuitContentCru","changePassangers","clickQuote","modalBanners","fee","tooltipReducer","initPassengers","destroyPassengers","initModal","baseIndexRooms","datePriceMin","isMulticabin","information","jtem","catGroupMin","catGroup","surname","initGroups","destroyGroups","initPrices","destroyPrices","Departures","year","createDeparatures","collapseGroupFromGroups","groupsEl","expandGroupFromGroups","groupsMouseover","groupsMouseout","groupsClick","handleDestroy","hasAdvantages","renderAdvantages","advantagesLabel","renderAdvantage","highlight","occupation","decks","occupationLabel","decksLabel","renderStar","returnDateDescription","hasFlights","departureDateLabel","returnDateLabel","hasFlightsLabel","contents","cont","justMarriedDescriptionLabel","initCarousel","destroyCarousel","initDates","destroyDates","Carousel","initYear","destroyYear","1023","Swiper","vendorConfig","autoResize","setupSwiper","speed","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideNextClass","slidePrevClass","wrapperClass","720","1600","nextEl","prevEl","hiddenClass","disabledClass","modifierClass","currentClass","totalClass","bulletClass","bulletActiveClass","clickable","clickableClass","autoplay","updateYear","activeIndex","slides","yearDeparture","yearCurrent","contains","datesMouseover","datesMouseout","collapseGroupFromPricesGroups","pricesEl","expandGroupFromPricesGroups","pricesGroupsMouseover","pricesGroupsMouseout","pricesGroupsClick","checkGroup","argument","Value","LoaderTempalte","Loader","banners","MessageTemplate","destroyMessage","createMessage","alertMessage","createTooltipClicked","initTooltipClicked","InputActions","intlTelInput","intlTelInputUtils","telInputElement","intl","preferredCountries","initialCountry","autoPlaceholder","utilsScript","isValidNumber","contactInputPhoneCountry","iso2","getSelectedCountryData","validate","agent","validNumber","CheckboxActions","checkboxesChange","changes","res","isCruiseCode","isNumGuests","isTc","isPaxConfig","createElement","Groups","Prices","Crudyn","Group","Highlight","Multicabin","categoryGroups","renderGroups","Item","renderCategories","highlightLabel","Departure","hasYear","before","after","renderCarousel","renderYear","renderDate","renderDeparture","minPrice","isOffer","checkPriceLabel","perPersonLabel","renderPrice","hasOffer","filtered","isAvailable","curr","renderMinPrice","renderPrices","minCategory","initInformation","destroyInformation","PricesMin","minPriceImage","createPricesMin","reference","1500","1250","1100","1024","900","768","Information","sorted","minPrices","group","ratio","lowestPrice","minPricesSorted","IMAGE","SVG","pricesMinLabel","IMAGE_HEIGHT","IMAGE_WIDTH","BUBBLE","renderSvg","IMAGE_SRCS","LOGITRAVEL","TRAVELTOOL","Price","HEIGHT_MAX","minPriceDate","calculateHeight","destroyAdvantages","initFlightsIncluded","destroyFlightsIncluded","initRooms","destroyRooms","initInformations","destroyInformations","initNights","destroyNights","origins","getCategoryConstants","addOtherAirports","destroyOtherAirports","autocomplete","originsResident","Choices","Utils","choices","noResultsText","searchPlaceholderValue","searchEnabled","renderChoiceLimit","searchResultLimit","removeItemButton","placeholderValue","loadingText","noChoicesText","itemSelectText","sortFn","setChoices","setChoiceByValue","showDropdown","fixSelectedChoice","setDataMultiple","setDataSingle","setupChoices","option","choiceList","residentLabel","renderCheckbox","Autocomplete","AComAct","OtherAirports","initOtherAirports","setOtherAirports","changeOtherAirports","startSuggestions","destroySuggestions","startInput","query","getSuggestions","keyups","queryError","suggestions","tooltipType","decode","TooltipClient","initKeyboard","destroyKeyboard","collectionByGroup","hookSuggestionsList","renderGroup","suggestionText","renderSuggestion","createSuggestions","renderSuggestions","createPanel","dataTooltip","addSuggestions","appendToParent","suggestionsTemplate","clicks","autocompleteSuggestion","initSuggestions","updateSuggestions","hasPlaceHolder","inputEl","hookPanelContent","hookSuggestions","getNextSibling","getPreviousSibling","goToFirstEl","keyedEl","scrollIntoView","goToLastEl","keydowns","preventDefault","blur","goToNextEl","goToPreviousEl","handleEnter","handleTab","sibling","nextElementSibling","matches","previousElementSibling","groupByType","cssValid","cssError","cssActive","controller","geolocation","codes","otherAirportsLabel","renderOtherAirports","dataTypeAttr","configData","dataConfigAttr","cssClass","renderLabel","loaderTemplate","renderInput","Counter","destroyButtons","addInformation","InformationTemplate","initAges","destroyAges","initCustomerCard","destroyCustomerCard","initCustomerSurname","destroyCustomerSurname","initDiscountCode","destroyDiscountCode","initHealthCare","destroyHealthCare","initJustMarried","destroyJustMarried","initRemoveRoom","destroyRemoveRoom","addRemoveRoom","animation","createInformation","handleAdd","updatePassengersLabels","Ages","CustomerCard","CustomerSurname","DiscountCode","HealthCare","Passengers","RemoveRoom","hasRemoveRoom","roomInfoLabel","buildLabel","Age","renderAges","customerCardLabel","customerSurnameLabel","discountCodeLabel","yesLabel","noLabel","healthCareLabel","justMarriedLabel","passengersLabel","initAge","destroyAge","addAge","difference","AgeTemplate","kndex","createAge","InputAct","createRemoveRoom","initNight","refernece","destroyNight","ModalRxjsTemplate","ModalRxjs","BannersBody","modalBanner","cabinModalHeader","imageModal","banner","currentTarget","imageAlt","btnImpInfo","importantInfo","clickConfig","ImageClient","OriginListClient","nav","secondaryImgs","originList","getConfig","initialize","$","buildRequest","SessionCode","executeAjax","post","contentType","withCredentials","pathname","splittedString","search","newQuery","buildFinalUrl","fail","prototypeConfiguration","setCookieAutoOrigin","autoOrigin","cookie","ck_name","ck_value","onClickOrigin","parentElement","newSelectedOrigin","selectedOrigin","selectedClass","lastChild","nodeName","originOption","logitravel","initTop","setVerticalImage","initSelect","initNav","closeIcon","escapeKey","outClick","addLanguages","destroyLanguages","languageBox","langBoxVisible","destroyTop","ImageTemplate","renderLanguage","renderFlags","createLanguages","attrLink","renderLang","languagesEl","langFlags","langAjax","reload","windowClicks","onload","navMenu","navMouseover","navMouseout","logoCompany","selectorImage","logocompany","flags","logosExternal","logoExternal","scrollToShow","scrollToTop","intervalId","pageYOffset","scroll","checkScroll","AgentCarouselClient","ModalClient","agentCarousel","onClose","tooltips","initOnClick","onOpen","clicked","ajaxCall","paramC2c","param","sURLVariables","decodeURIComponent","sParameterName","getUrlParameter","setMultiCarousel","selectorClass","update","appendSlide","setConfig","checkHasNavigation","checkHasPagination","hasMousewheel","hasController","tippy","axios","InputClient","initLegalText","arrow","arrowType","theme","interactive","instancePlugin","number","getNumber","setNumber","modalInit","previusTarget","removeActives","cards","initHidden","setAgentCarousel","InSchedule","generateAgents","setCarousel","urlList","sendForm","formData","Phone","AgentId","Queue","Recaptcha","formValidate","textContent","sending","urlCall","addErrorMessage","sentError","addSlide","agentsElements","updateSlides","addEventClick","addForm","replaceDataForm","errorAlert","captcha","siteKey","grecaptcha","removeForm","firstChild","replaceDataAgent","newNode","cloneNode","regExp","ImageURLv2","currentAgent","Code","removeAllSlides","Operators","Status","addRemoveActive","ev","children","checkInSchedule","inSchedule","addCaptcha","bodyNode","captchaNode","messageError","errorLocation","errorMessage","insertAdjacentHTML","autoStore","cssVisible","cssModalBody","modalClose","notClose","addToStore","removeFromStore","getHeaderEl","onClickTrigger","setClose","closeElement","isOpen","addToDom","onClickClose","onKeydown","onClickModal","onClickWindow","TRIGGERED","loops","createLoop","setImage","getImageEl","opts","startLazy","once","startLoop","disableLazy","withBackground","isVertical","sendFormKeyDown","activeElement","sendFormClick","breadcrumbsId","agentCarouselClient","newsletterSubscription","jQuery","inputClient","checkboxClient","emailExpReg","allowTitleHTML","distance","getElementById","customCommunication","urlEndpoint","getRegExpEmail","validateMail","beforeSend","getElementsByClassName","origenSuscrip","success","clearForm","warn","inputConfig","isChecked","check","uncheck","ProductCardCarousel","VerticalBannerMask","mask","carouselNoBanner","ProductCardT2","dynLogo","dyn","taxesModifier","imagesConfig","imageClient","735","1300","pdCarouselBanner","pdCarousel","Tabs","tabs","navigations","initNavigation","destroyNavigation","destroyImages","disableds","tab","hasLink","tabsRedirect","callbackRedirect","previusTab","hasImages","imageEls","initCollapse","Collapse","collapses","changedCollpase","readMoreLabel","readLessLabel","collapsed","collapsible","plus","minus","CardInformationCarousel","galleryTrigger","initCards","destroyCards","centeredSlides","watchSlidesVisibility","CardInformation","initButton","initImage","destroyImage","hasModal","addGallery","MQ_1300","DEFAULT","MQ_1112","MQ_1024","resizeImages","gallery","innerWidth","RESIZE_FIRST","RESIZE_LARG","RESIZE_SHORT","shipSection","reseize","galleryClick","GalActions","GalleryTempalte","Gallery","createGallery","photoswipe","hideGallery","initPhotoswipe","PhotoSwipe","PhotoSwipeUI","isImage","createImage","isVideo","createVideo","initVideo","createItems","captionEl","fullscreenEl","preloaderEl","shareEl","zoomEl","listen","getCurrentIndex","ImageCfg","Video","VideoTemplate","YTPlayer","VimeoPlayer","PROVIDER_TYPE","player","createPlayerYoutube","createPlayerVimeo","created","imageMod","imgTabletConfig","ImageRxjs","promosImg","PackageItem","packages","addOrigins","destroyOrigins","package","otherOrigins","buttonOrigins","createOrigins","otherOriginsTitle","otherOriginsSubtitle","departLabel","fromLabel","renderOrigin","angleRight","petitionMod","idAnchor","simple","two","addToast","getToasts","ToastTempalte","Toast","createToast","toast","toasts","destroyToast","indexes","timeOut$","currentToast","getXHRResponse","xhr","responseType","ieXHR","responseText","responseXML","originalEvent","allHeaders","getAllResponseHeaders","responseHeaders","line","AjaxError","AjaxTimeoutError","AjaxTimeoutErrorImpl","ajaxGet","ajaxPost","ajaxDelete","ajaxPut","ajaxPatch","mapResponse","ajaxGetJSON","urlOrConfig","searchParams_1","crossDomain","queryParams","configuredBody","configuredHeaders","parts","URLSearchParams","xsrfCookieName","xsrfHeaderName","xsrfCookie","FormData","isFormData","isURLSearchParams","toStringCheck","isArrayBuffer","isFile","isBlob","ReadableStream","isReadableStream","ArrayBuffer","isView","isArrayBufferView","extractContentTypeAndMaybeSerializeBody","_request","createXHR","XMLHttpRequest","progressSubscriber_1","progressSubscriber","includeDownloadProgress","includeUploadProgress","addErrorEvent","createResponse_1","direction","addProgressEvent_1","LOADSTART","PROGRESS","LOAD","upload","emitError_1","user","open","password","setRequestHeader","readyState","put","patch","getJSON","_toString"],"mappings":"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","file":"core.bundle.js","sourcesContent":["/******************************************************************************\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, SuppressedError, Symbol */\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 __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\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 (g && (g = 0, op[0] && (_ = 0)), _) 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 var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\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, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\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: false } : 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, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __createBinding,\r\n __exportStar,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n};\r\n","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\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 if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.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 { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\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';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\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}\nexport function 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}\nexport function 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}\nexport function 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}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function 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=innerFrom.js.map","/* ==========================================================================\n Dom helpers\n ========================================================================== */\n\nconst elementExist = element => !!document.querySelector(element);\n\nconst toNode = html => new DOMParser().parseFromString(html, 'text/html').body.childNodes;\n\nmodule.exports = {\n elementExist,\n toNode\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.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 subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\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","/* ==========================================================================\n Data Helpers\n ========================================================================== */\n/* eslint-disable */\n/**\n * Function to prepare the data config\n * @param {object} data Object containing the data config.\n * @param {string} key Key name to start the key name value for the object values.\n * @returns {object} Config data to have available in the template\n */\nfunction prepareDataConfig(data = {}, key = 'data') {\n const name = key;\n\n const result = {};\n result[`${name}Content`] = data.content || false;\n result[`${name}Id`] = data.id || false;\n result[`${name}Latitude`] = data.latitude || 0;\n result[`${name}Longitude`] = data.longitude || 0;\n result[`${name}Max`] = data.max || false;\n result[`${name}Min`] = data.min || false;\n result[`${name}Selected`] = data.selected ? '' : false;\n result[`${name}Token`] = data.token || false;\n result[`${name}Type`] = data.type || false;\n result[`${name}Value`] = data.value || false;\n result[`${name}Items`] = data.items || false;\n result[`${name}DefaultDate`] = data.defaultDate || false;\n\n return result;\n}\n/* eslint-enable */\n\n/**\n * Function to prepare the price\n * @param {object} price Object containing the data model for the price.\n * @param {string} key Key name to start the key name value for the object values.\n * @returns {object} Price data to have available in the template\n */\nfunction preparePrice(price = {}, key = 'price') {\n const name = key;\n\n const result = {};\n result[`${name}Value`] = price.value;\n result[`${name}From`] = price.from || '';\n result[`${name}Currency`] = price.currency;\n\n return result;\n}\n\n/**\n * Function to prepare the link\n * @param {object} link Object containing the data model for the link.\n * @param {string} key Key name to start the key name value for the object values.\n * @returns {object} Link data to have available in the template\n */\nfunction prepareLink(link = {}, key = 'link') {\n const name = key;\n\n const result = {};\n result[`${name}Content`] = link.content || '';\n result[`${name}Href`] = link.href;\n result[`${name}Title`] = link.title;\n result[`${name}Target`] = link.target || '_self';\n result[`${name}Mail`] = link.mail || false;\n\n return result;\n}\n\n/**\n * Function to prepare an array of links\n * @param {array} link Object containing the data model for the links.\n * @param {string} key Key name to start the key name value for the object values.\n * @returns {object} Link data to have available in the template\n */\nfunction prepareLinks(links = [], key) {\n const name = key;\n const temp = links.map(item => prepareLink(item.link, name));\n\n const result = {};\n result[`${name}Content`] = temp.map(item => item[`${name}Content`]);\n result[`${name}Href`] = temp.map(item => item[`${name}Href`]);\n result[`${name}Title`] = temp.map(item => item[`${name}Title`]);\n result[`${name}Target`] = temp.map(item => item[`${name}Target`]);\n result[`${name}Mail`] = temp.map(item => item[`${name}Mail`]);\n\n return result;\n}\n/**\n * Function to prepare the date of a image\n * @param {object} image Object containing the data model for the image.\n * @param {string} key Key name to start the key name value for the object values.\n * @param {object} resize Resize configuration for the image.\n * @returns {object} Image data to have available in the template\n */\nfunction prepareImage(image = {}, key = 'image', resize = {}) {\n const name = key;\n const tempResize = {\n operation: resize.operation || 'resize',\n suboperation: resize.suboperation || 'crop',\n height: resize.height || 75,\n width: resize.width || 75,\n quality: resize.quality || 97\n };\n\n const result = {};\n result[`${name}Src`] = image.src;\n result[`${name}Alt`] = image.alt;\n result[`${name}Alternative`] = image.alternative;\n result[`${name}Title`] = image.title;\n result[`${name}Class`] = image.carousel ? 'carousel__lazy' : 'lazy';\n result[`${name}Lazy`] = 'images/shim.gif';\n result[`${name}Carousel`] = !!image.carousel;\n result.resizeData = tempResize;\n\n // Add link to image\n if (image.link) result[`${name}Link`] = prepareLink(image.link);\n\n return result;\n}\n\n/**\n * Function to format the date\n * @param {object} date Object containing the date\n * @returns {string} Date in format yyyy-mm-dd\n */\nfunction formatDate(date = new Date()) {\n const rDate = date.getDate();\n const rMonth = date.getMonth() + 1;\n const rYear = date.getFullYear();\n\n return `${rYear}-${rMonth < 10 ? `0${rMonth}` : rMonth}-${rDate}`;\n}\n\n/**\n * Function to create random id\n * @param {string} key String containing the key to prepend the id\n * @param {Number} max Max number to calculate random number to\n * @returns {string} Random id with format key-number\n */\nfunction randomId(key = 'id', max = 1000) {\n return `${key}-${Math.floor(Math.random() * max)}`;\n}\n\n/**\n * Function to add styles to the config\n * @param {object} data Object containing the data of the model part\n * @param {Array} styles Collection of styles to add to the data\n * @returns {object} Data object with the styles added to the config\n */\nfunction addStyle(data, styles = []) {\n const result = data;\n const css = styles;\n\n result.config = data.config ? data.config : {};\n result.config.styles = result.config ? result.config.styles : [];\n\n result.config.styles = css;\n\n return result;\n}\n\n/**\n * Function to add styles to the config\n * @param {object} data Object containing the data of the model part\n * @param {object} values Collection of data-values to add to the data\n * @returns {object} Data object with the data added to the config\n */\nfunction addData(data, dataValue = {}) {\n const result = data;\n\n result.config = data.config ? data.config : {};\n result.config.data = result.config\n ? {\n ...result.config.data,\n ...dataValue\n }\n : dataValue;\n\n // result.config.data = css;\n\n return result;\n}\n\nmodule.exports = {\n prepareDataConfig,\n preparePrice,\n prepareLink,\n prepareLinks,\n prepareImage,\n formatDate,\n randomId,\n addStyle,\n addData\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CircuitContentCru',\n init: true,\n start: true,\n imgAlternative: 'https://cdn.logitravel.com/comun/images/not-available.png',\n css: {\n isPassengers: 'is-passengers',\n isJustMarried: 'is-just-married',\n isHealthCare: 'is-health-care',\n isCustomerCard: 'is-customer-card',\n isCustomerSurname: 'is-customer-surname',\n isDiscountCode: 'is-discount-code',\n isAge: 'is-age',\n isRemoveRoom: 'is-remove-room',\n isCategories: 'is-categories',\n isNights: 'is-nights',\n isBanners: 'is-banners',\n isBannersFull: 'is-banners-full',\n isVisible: 'is-visible',\n isLowest: 'is-lowest',\n isActive: 'is-active',\n isExpanded: 'is-expanded',\n isHidden: 'is-hidden',\n modal: 'modal-rxjs--circuit-content',\n readMore: 'circuit-content-cru__read-more',\n tooltipFee: 'circuit-content-cru__tooltip--fee',\n contactInputName: 'circuit-content-cru__contact--name',\n contactInputSurname: 'circuit-content-cru__contact--surname',\n contactInputEmail: 'circuit-content-cru__contact--email',\n contactInputPhone: 'circuit-content-cru__contact--phone',\n checkbox: 'circuit-content-cru__contact--checkbox'\n },\n type: {\n counter: 'circuit-content-cru-counter',\n origin: 'circuit-content-cru-origin',\n resident: 'circuit-content-cru-resident',\n otherAirports: 'circuit-content-cru-other-airports',\n healthCare: 'circuit-content-cru-health-care',\n justMarried: 'circuit-content-cru-just-married',\n passengers: 'circuit-content-cru-passengers',\n customerCard: 'circuit-content-cru-customer-card',\n customerSurname: 'circuit-content-cru-customer-surname',\n discountCode: 'circuit-content-cru-discount-code',\n nights: 'circuit-content-cru-nights',\n age: 'circuit-content-cru-age',\n removeRoom: 'circuit-content-cru-remove-room',\n pricesMin: 'circuit-content-cru-prices-min',\n advantages: 'circuit-content-cru-advantages',\n tooltip: 'circuit-content-cru-tooltip',\n tooltipClicked: 'circuit-content-cru-tooltip-clicked',\n departures: 'circuit-content-cru-departures',\n modal: 'circuit-content-modal',\n modalImage: 'circuit-content-modal-image',\n readMore: 'circuit-content-button-read-more',\n contactInputName: 'circuit-content-contact-name',\n contactInputSurname: 'circuit-content-contact-surname',\n contactInputEmail: 'circuit-content-contact-email',\n contactInputPhone: 'circuit-content-contact-phone',\n checkbox: 'circuit-content-cru-contact-checkbox'\n },\n otherAirportsDropdownValue: 'OTHER'\n};\n\nmodule.exports = () => config;\n","export function noop() { }\n//# sourceMappingURL=noop.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.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.currentObservers = null;\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 if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\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 = this.currentObservers = 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 _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\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","const url = require('url');\nconst { markdown } = require('markdown');\nconst PriceFormatter = require('./PriceFormatter');\nconst Env = require('./Env');\nconst textUtils = require('./utils/texts');\n\nmodule.exports = (context = {}) => {\n const { format: formatPrice, formatWithForcedDecimals } = PriceFormatter(context);\n\n return {\n debug,\n renderImage,\n imageResizer: renderImage,\n asset,\n staticUrl,\n getStaticsBaseUrl,\n viewport,\n resize,\n isDesktop,\n isTablet,\n isMobile,\n random,\n dateFormat,\n markdown: renderMarkdown,\n formatPrice,\n formatWithForcedDecimals,\n icon: name => ``,\n ...textUtils\n };\n\n /**\n * Alias of console.log\n */\n function debug(msg) {\n console.log(msg);\n }\n\n /**\n * Returns the full URL of an asset\n * @param {string} file Asset filename (with extension)\n * @param {string} versionTimestamp (optional) timestamp to add to the url\n * @example staticUrl('alex-cruceros/index.css')\n * @returns {string} The asset's url\n */\n function staticUrl(file, versionTimestamp) {\n let trimmedFile = file.replace(/^\\//, '');\n\n if (Env.isDevelopment(context.NODE_ENV)) {\n trimmedFile = trimmedFile.replace('alexandria', 'alexandria/development');\n }\n\n if (Env.isStaging(context.NODE_ENV)) {\n trimmedFile = trimmedFile.replace('alexandria', 'alexandria/staging');\n }\n\n const assetUrl = getStaticsBaseUrl() + trimmedFile;\n\n if (versionTimestamp) {\n return `${assetUrl}?${versionTimestamp}`;\n }\n return assetUrl;\n }\n\n /**\n * Returns the base url of assets\n * @param {string} assetsPath (optional) relative path where assets are located\n * @param {*} devHost (optional) port for development environments\n */\n function getStaticsBaseUrl(assetsPath = '', devHost = `localhost:8080`) {\n /* Local */\n if (Env.isLocal(context.NODE_ENV) || Env.isDevelopment(context.NODE_ENV)) {\n const { PORT = false } = process.env;\n\n return new url.URL(assetsPath, `${PORT ? `http://localhost:${PORT}` : `http://${devHost}`}`).href;\n }\n\n let cdnBase;\n if (context.mscdn.startsWith('http')) {\n cdnBase = context.mscdn;\n } else {\n cdnBase = `http://${context.mscdn}`;\n }\n const { href } = new url.URL(assetsPath, cdnBase);\n return href.replace(/https?:/, '');\n }\n\n /**\n * Generates image URLs to resize and crop images\n *\n * @param {string} src source of the image ( without CDN )\n * @param {object} [{\n * operation, suboperation, width, height, quality = 80\n * }={}] Options object:\n * operation - first type of operation: resize\n * suboperation - second type of operation: crop\n * width - width you want for your image\n * height - height you want for your image\n *\n * @returns {string} finalSource - return a final source of image resized and cropped\n * @example renderImage(Model.image)\n * @example renderImage(Model.image, \"resize\", 1000, 375)\n * @example renderImage(Model.image, \"resize\", \"crop\", 1000, 375)\n */\n function renderImage(src, { operation, suboperation, width, height, quality = 80 } = {}) {\n const regex = /.*((cdn|ssl)\\.(logitravel|alitravel|traveltool|bookingay)\\..*?)\\/+(.*\\.(jpg|png|gif))(\\?.*)?/gim;\n\n let finalSource = prepareSrc();\n\n if (operation && width >= 0 && height >= 0) {\n if (finalSource.startsWith('//')) {\n finalSource = finalSource.substring(2);\n }\n\n if (suboperation && suboperation !== '') {\n finalSource = [\n context.mscdn,\n '/wsimgresize/',\n operation,\n '/',\n suboperation,\n '/',\n width,\n '/',\n height,\n '/',\n finalSource\n ].join('');\n } else {\n finalSource = [\n context.mscdn,\n '/wsimgresize/',\n operation,\n '/',\n width,\n '/',\n height,\n '/',\n finalSource\n ].join('');\n }\n }\n\n const querySeparator = finalSource.indexOf('?') === -1 ? '?' : '&';\n finalSource += `${querySeparator}jpegQuality=${quality}`;\n return finalSource;\n\n function prepareSrc() {\n const match = regex.exec(src);\n if (match !== null) {\n const relative = match[4];\n const params = match[6] || '';\n\n return [context.mscdn, '/', relative, params].join('');\n }\n if (src.startsWith('http') || src.startsWith('https') || src.startsWith('//')) {\n return src.replace(/(^\\w+:|^)\\/\\//, '');\n }\n if (src.startsWith('/')) {\n return [context.mscdn, src].join('');\n }\n return [context.mscdn, '/', src].join('');\n }\n }\n\n /**\n * Construct the full url of images with added protocol\n * @param {string} path - source of the image ( without CDN )\n * @returns {string} return a final source of image with CDN added\n * @example assetImg('http://logitravel.com/photo.jpg')\n */\n function asset(path) {\n const image = renderImage(path);\n let protocol = '';\n if (path.startsWith('http:')) {\n protocol = 'http:';\n } else if (path.startsWith('https:')) {\n protocol = 'https:';\n }\n return protocol ? [protocol, image.startsWith('//') ? '' : '//', image].join('') : image;\n }\n\n /**\n * Construct the url of images to resize and crop depending on viewport's size\n\n * @param {string} src - source of the image ( without CDN )\n * @param {string} [operation] - first type of operation: resize\n * @param {string} [suboperation] - second type of operation: crop\n * @param {number} [width] - width you want for your image\n * @param {number} [height] - height you want for your image\n * @param {number} [viewportWidth] - width of the viewport\n * @param {number} [viewportHeight] - height of the viewport\n * @returns {string} return a final source of image using renderImage with a calculated size\n * @example viewport(Model.image, \"resize\", \"crop\", 1000, 375, 1980, 1080)\n */\n\n /**\n * Construct the url of images to resize and crop depending on viewport's size\n *\n * @param {any} src source of the image ( without CDN )\n * @param {any} [{\n * operation, suboperation, width, height, viewportWidth, viewportHeight\n * }={}] Options:\n * operation - first type of operation: resize\n * suboperation - second type of operation: crop\n * width - width you want for your image\n * height - height you want for your image\n * viewportWidth - width of the viewport\n * viewportHeight - height of the viewport\n * @returns {string} return a final source of image using renderImage with a calculated size\n * @example viewport(Model.image, \"resize\", \"crop\", 1000, 375, 1980, 1080)\n */\n function viewport(src, { operation, suboperation, width, height, viewportWidth, viewportHeight } = {}) {\n const finalWidth = viewportWidth ? Math.min(width, viewportWidth) : width;\n const finalHeight = viewportHeight ? Math.min(height, viewportHeight) : height;\n const options = {\n operation,\n suboperation,\n width: finalWidth,\n height: finalHeight\n };\n return renderImage(src, options);\n }\n\n /**\n * Alias for renderImage with resize operation\n */\n function resize(src, width, height) {\n const options = {\n operation: 'resize',\n suboperation: undefined,\n width,\n height\n };\n return renderImage(src, options);\n }\n\n /**\n * Checks if device is desktop\n * @returns {boolean} return if it's true\n */\n function isDesktop() {\n return context.device === 'desktop';\n }\n\n /**\n * Checks if device is tablet\n * @returns {boolean} return if it's true\n */\n function isTablet() {\n return context.device === 'tablet';\n }\n\n /**\n * Checks if device is mobile\n * @returns {boolean} return if it's true\n */\n function isMobile() {\n return context.device === 'mobile';\n }\n\n /**\n * Get a random number, perfect for ID's\n * @returns {number} return a random number\n */\n function random() {\n const out = Math.floor(Math.random() * 9999 + 1);\n return `r${out}`;\n }\n\n /**\n * Returns a date format\n *\n * @param {string} device\n * @param {string} app\n * @returns {string}\n */\n function dateFormat(device, app) {\n let format = 'DD, d MM, yy';\n if (device === 'mobile') {\n switch (app) {\n case 'logitravelru':\n format = 'd-mm-yy';\n break;\n case 'logitravelil':\n format = 'd-mm-yy';\n break;\n case 'logitravelae':\n format = 'd-mm-yy';\n break;\n default:\n format = 'd M yy';\n break;\n }\n } else {\n switch (app) {\n case 'logitravelru':\n format = 'd M yy';\n break;\n case 'logitravelil':\n format = 'd MM yy';\n break;\n case 'logitravelae':\n format = 'd MM yy';\n break;\n default:\n format = 'D, d MM, yy';\n break;\n }\n }\n return format;\n }\n\n function renderMarkdown(str = '') {\n let out = markdown.toHTML(str);\n if (out.substring(0, 3) === '

') {\n out = out.slice(3, -4);\n }\n return out;\n }\n};\n","/* ==========================================================================\n Helpers > State\n ========================================================================== */\n\n/* Store Constructor */\nfunction Store(reducers = {}, initialState = {}) {\n this.subscribers = [];\n this.reducers = reducers;\n this.state = this.reduce(initialState, {});\n}\n\n/* Subscribe */\nStore.prototype.subscribe = function subscribe(fn) {\n this.subscribers = [...this.subscribers, fn];\n /* Return the state passed to the subscriber on the first subscription */\n fn(this.state, {});\n return {\n unsubscribe: () => {\n this.subscribers = this.subscribers.filter(subscriber => subscriber !== fn);\n }\n };\n};\n\n/* Dispatch */\nStore.prototype.dispatch = function dispatch(action) {\n this.state = this.reduce(this.state, action);\n this.subscribers.forEach(subscriber => subscriber(this.state, action));\n};\n\n/* Reduce */\nStore.prototype.reduce = function reduce(state, action) {\n const newState = Object.keys(this.reducers)\n .map(key => ({ [key]: this.reducers[key](state[key], action) }))\n .reduce((acc, val) => ({ ...acc, ...val }));\n\n return newState;\n};\n\n/* Add reducers */\nStore.prototype.addReducers = function addReducers(reducers = {}) {\n this.reducers = {\n ...this.reducers,\n ...reducers\n };\n};\n\n/* Select */\nStore.prototype.select = function select(key = '') {\n return this.state[key];\n};\n\n/* Exports */\nmodule.exports = {\n Store\n};\n","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 { __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._finalizers = 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 initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\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 (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_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 execFinalizer(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._finalizers = (_a = this._finalizers) !== 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 _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, 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 execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.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","/* ==========================================================================\n ImageRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ImageRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ImageRxjs(selector = '[data-component=ImageRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n img: instance.element.querySelector('img'),\n figcaption: instance.element.querySelector('figcaption'),\n a: instance.element.querySelector('a')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n if (instance.config.init) instance.init();\n\n /* Return */\n return instance;\n }\n};\n","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.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 { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\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","/* ==========================================================================\n CircuitContentCru > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'CIRCUITCONTENTCRU::DESTROY';\n\nconst ADD_ROOM = 'CIRCUITCONTENTCRU::ADD_ROOM';\nconst DELETE_ROOM = 'CIRCUITCONTENTCRU::DELETE_ROOM';\nconst SET_ROOMS = 'CIRCUITCONTENTCRU::SET_ROOMS';\n\nconst CHANGE_PASSENGERS = 'CIRCUITCONTENTCRU::CHANGE_PASSENGERS';\n\nconst SET_ORIGIN = 'CIRCUITCONTENTCRU::SET_ORIGIN';\nconst SET_NIGHTS = 'CIRCUITCONTENTCRU::SET_NIGHTS';\nconst SET_RESIDENT = 'CIRCUITCONTENTCRU::SET_RESIDENT';\n\nconst SET_INFORMATION = 'CIRCUITCONTENTCRU::SET_INFORMATION';\n\nconst SELECT_DATE_PRICE_MIN = 'CIRCUITCONTENTCRU::SELECT_DATE_PRICE_MIN';\n\nconst COLLAPSE_GROUP = 'CIRCUITCONTENTCRU::COLLAPSE_GROUP';\nconst EXPAND_GROUP = 'CIRCUITCONTENTCRU::EXPAND_GROUP';\n\nconst SET_CATEGORIES_PRICES = 'CIRCUITCONTENTCRU::SET_CATEGORIES_PRICES';\n\nconst OPEN_TOOLTIP = 'CIRCUITCONTENTCRU::OPEN_TOOLTIP';\nconst CLOSE_TOOLTIP = 'CIRCUITCONTENTCRU::CLOSE_TOOLTIP';\n\nconst TOGGLE_TOOLTIP_CLICKED = 'CIRCUITCONTENTCRU::TOGGLE_TOOLTIP_CLICKED';\n\nconst WATCH_FEE = 'CIRCUITCONTENTCRU::WATCH_FEE';\nconst UNWATCH_FEE = 'CIRCUITCONTENTCRU::UNWATCH_FEE';\n\nconst WATCH_CONTACT_TOOLTIP = 'CIRCUITCONTENTCRU::WATCH_CONTACT_TOOLTIP';\nconst UNWATCH_CONTACT_TOOLTIP = 'CIRCUITCONTENTCRU::UNWATCH_CONTACT_TOOLTIP';\n\nconst SET_CONTACT = 'CIRCUITCONTENTCRU::SET_CONTACT';\n\nconst VALIDATE_CHECKBOXES = 'CIRCUITCONTENTCRU::VALIDATE_CHECKBOXES';\nconst SAVE_CHECKBOX = 'CIRCUITCONTENTCRU::SAVE_CHECKBOX';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\nconst addRoom = () => ({ type: ADD_ROOM });\nconst deleteRoom = payload => ({ type: DELETE_ROOM, payload });\nconst setRooms = payload => ({ type: SET_ROOMS, payload });\n\nconst changePassengers = payload => ({ type: CHANGE_PASSENGERS, payload });\n\nconst setOrigin = payload => ({ type: SET_ORIGIN, payload });\nconst setNights = payload => ({ type: SET_NIGHTS, payload });\nconst setResident = payload => ({ type: SET_RESIDENT, payload });\n\nconst setInformation = payload => ({ type: SET_INFORMATION, payload });\n\nconst selectDatePriceMin = payload => ({ type: SELECT_DATE_PRICE_MIN, payload });\n\nconst collapseGroup = payload => ({ type: COLLAPSE_GROUP, payload });\nconst expandGroup = payload => ({ type: EXPAND_GROUP, payload });\n\nconst setCategoriesPrices = payload => ({ type: SET_CATEGORIES_PRICES, payload });\n\nconst openTooltip = payload => ({ type: OPEN_TOOLTIP, payload });\nconst closeTooltip = () => ({ type: CLOSE_TOOLTIP });\n\nconst toggleTooltipClick = payload => ({ type: TOGGLE_TOOLTIP_CLICKED, payload });\n\nconst watchFee = payload => ({ type: WATCH_FEE, payload });\nconst unwatchFee = () => ({ type: UNWATCH_FEE });\n\nconst watchContactTooltip = payload => ({ type: WATCH_CONTACT_TOOLTIP, payload });\nconst unwatchContactTooltip = () => ({ type: UNWATCH_CONTACT_TOOLTIP });\n\nconst setContact = payload => ({ type: SET_CONTACT, payload });\n\nconst validateCheckboxes = payload => ({ type: VALIDATE_CHECKBOXES, payload });\nconst saveCheckbox = payload => ({ type: SAVE_CHECKBOX, payload });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n ADD_ROOM,\n DELETE_ROOM,\n SET_ROOMS,\n SET_ORIGIN,\n SET_NIGHTS,\n SET_RESIDENT,\n SET_INFORMATION,\n CHANGE_PASSENGERS,\n SELECT_DATE_PRICE_MIN,\n COLLAPSE_GROUP,\n EXPAND_GROUP,\n SET_CATEGORIES_PRICES,\n OPEN_TOOLTIP,\n CLOSE_TOOLTIP,\n TOGGLE_TOOLTIP_CLICKED,\n WATCH_FEE,\n UNWATCH_FEE,\n WATCH_CONTACT_TOOLTIP,\n UNWATCH_CONTACT_TOOLTIP,\n SET_CONTACT,\n VALIDATE_CHECKBOXES,\n SAVE_CHECKBOX\n },\n actions: {\n destroy,\n addRoom,\n deleteRoom,\n setRooms,\n setOrigin,\n setNights,\n setResident,\n setInformation,\n changePassengers,\n selectDatePriceMin,\n collapseGroup,\n expandGroup,\n setCategoriesPrices,\n openTooltip,\n closeTooltip,\n toggleTooltipClick,\n watchFee,\n unwatchFee,\n watchContactTooltip,\n unwatchContactTooltip,\n setContact,\n validateCheckboxes,\n saveCheckbox\n }\n};\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.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","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","/* ==========================================================================\n ButtonRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ButtonRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ButtonRxjs(selector = '[data-component=ButtonRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n content: instance.element.querySelector('[data-button-content]'),\n icon: instance.element.querySelector('i')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n if (instance.config.init) instance.init();\n\n /* Return */\n return instance;\n }\n};\n","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 { 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 { __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","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","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.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 { __extends } 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 _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\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","/* ==========================================================================\n CircuitContentCru > Constants > Tooltip\n ========================================================================== */\n\n/* Constants */\nconst TOOLTIP_CATEGORY = 'TOOLTIP_CATEGORY';\nconst TOOLTIP_DEPARTURE_DATE = 'TOOLTIP_DEPARTURE_DATE';\nconst TOOLTIP_HIGHLIGHT = 'TOOLTIP_HIGHLIGHT';\nconst TOOLTIP_ADVANTAGE = 'TOOLTIP_ADVANTAGE';\nconst TOOLTIP_JUST_MARRIED = 'TOOLTIP_JUST_MARRIED';\nconst TOOLTIP_OFFER = 'TOOLTIP_OFFER';\nconst TOOLTIP_FEES = 'TOOLTIP_FEES';\nconst TOOLTIP_CONTACT = 'TOOLTIP_CONTACT';\n\nconst TOOLTIP_IMAGE_WIDTH = 350;\nconst TOOLTIP_IMAGE_HEIGHT = 185;\n\n/* Exports */\nmodule.exports = {\n TOOLTIP_CATEGORY,\n TOOLTIP_DEPARTURE_DATE,\n TOOLTIP_HIGHLIGHT,\n TOOLTIP_IMAGE_WIDTH,\n TOOLTIP_IMAGE_HEIGHT,\n TOOLTIP_ADVANTAGE,\n TOOLTIP_JUST_MARRIED,\n TOOLTIP_OFFER,\n TOOLTIP_FEES,\n TOOLTIP_CONTACT\n};\n","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","/* ==========================================================================\n SelectRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'SELECT::DESTROY';\nconst DISABLE = 'SELECT::DISABLE';\nconst ENABLE = 'SELECT::ENABLE';\n\nconst DISPLAY = 'SELECT::DISPLAY';\nconst HIDE = 'SELECT::HIDE';\nconst RESET_STATUS = 'SELECT::RESET_STATUS';\nconst SET_ERROR = 'SELECT::SET_ERROR';\nconst SET_VALID = 'SELECT::SET_VALID';\n\nconst SET_OPTION = 'SELECT::SET_OPTION';\nconst SET_OPTIONS = 'SELECT::SET_OPTIONS';\nconst SELECT_OPTION = 'SELECT::SELECT_OPTION';\n\nconst TOGGLE_LOADING = 'SELECT::TOGGLE_LOADING';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst disable = () => ({ type: DISABLE });\nconst enable = () => ({ type: ENABLE });\n\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\nconst resetStatus = () => ({ type: RESET_STATUS });\nconst setError = () => ({ type: SET_ERROR });\nconst setValid = () => ({ type: SET_VALID });\n\nconst setOption = payload => ({ type: SET_OPTION, payload });\nconst setOptions = payload => ({ type: SET_OPTIONS, payload });\nconst selectOption = payload => ({ type: SELECT_OPTION, payload });\n\nconst toggleLoading = () => ({ type: TOGGLE_LOADING });\n\n/* Exports */\nmodule.exports = {\n types: {\n DISPLAY,\n HIDE,\n DESTROY,\n RESET_STATUS,\n SET_ERROR,\n SET_VALID,\n SET_OPTION,\n SET_OPTIONS,\n SELECT_OPTION,\n ENABLE,\n DISABLE,\n TOGGLE_LOADING\n },\n actions: {\n display,\n hide,\n destroy,\n resetStatus,\n setError,\n setValid,\n setOption,\n setOptions,\n selectOption,\n enable,\n disable,\n toggleLoading\n }\n};\n","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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 { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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 = createOperatorSubscriber(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","/* ==========================================================================\n InputRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'INPUT::DESTROY';\nconst DISABLE = 'INPUT::DISABLE';\nconst DISPLAY = 'INPUT::DISPLAY';\nconst ENABLE = 'INPUT::ENABLE';\nconst HIDE = 'INPUT::HIDE';\nconst RESET_STATUS = 'INPUT::RESET_STATUS';\nconst SET_UI_STATE = 'INPUT::SET_UI_STATE';\nconst SET_ERROR = 'INPUT::SET_ERROR';\nconst SET_VALID = 'INPUT::SET_VALID';\nconst TOGGLE_ACTIVE = 'INPUT::TOGGLE_ACTIVE';\n\nconst SET_VALUE = 'INPUT::SET_VALUE';\nconst CHANGE_VALUE = 'INPUT::CHANGE_VALUE';\nconst RESET = 'INPUT::RESET';\n\nconst TOGGLE_LOADING = 'INPUT::TOGGLE_LOADING';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst disable = () => ({ type: DISABLE });\nconst display = () => ({ type: DISPLAY });\nconst enable = () => ({ type: ENABLE });\nconst hide = () => ({ type: HIDE });\nconst resetStatus = () => ({ type: RESET_STATUS });\nconst setUiState = payload => ({ type: SET_UI_STATE, payload });\nconst setError = () => ({ type: SET_ERROR });\nconst setValid = () => ({ type: SET_VALID });\nconst toggleActive = () => ({ type: TOGGLE_ACTIVE });\n\nconst setValue = payload => ({ type: SET_VALUE, payload });\nconst changeValue = payload => ({ type: CHANGE_VALUE, payload });\nconst reset = () => ({ type: RESET });\n\nconst toggleLoading = () => ({ type: TOGGLE_LOADING });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISABLE,\n DISPLAY,\n ENABLE,\n HIDE,\n RESET_STATUS,\n SET_UI_STATE,\n SET_ERROR,\n SET_VALID,\n TOGGLE_ACTIVE,\n SET_VALUE,\n CHANGE_VALUE,\n RESET,\n TOGGLE_LOADING\n },\n actions: {\n destroy,\n disable,\n display,\n enable,\n hide,\n resetStatus,\n setUiState,\n setError,\n setValid,\n toggleActive,\n setValue,\n changeValue,\n reset,\n toggleLoading\n }\n};\n","/* ==========================================================================\n Tooltip > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('./client/js/config');\n\n/**\n * Tooltip template\n * @param {object} data Object containing the data model for this component.\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Template(data, context) {\n /* Data */\n const { config = {}, content = '', negative = false, placement = 'bottom', offset = configuration().offset } = data;\n const { styles = [], literals = {} } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* Template */\n return html(`\n

\n `);\n};\n","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.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 { 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 { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(createOperatorSubscriber(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 { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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 { __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 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 { 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 (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __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 var _a;\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 = (_a = this.id) !== null && _a !== void 0 ? _a : 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 if (id != null) {\n intervalProvider.clearInterval(id);\n }\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('Scheduled action threw falsy error');\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","/* ==========================================================================\n InputRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * InputRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function InputRxjs(selector = '[data-component=InputRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n input: instance.element.querySelector('input'),\n label: instance.element.querySelector('label')\n };\n\n /* ID for pairing */\n instance.id = randomId(randomId('input'));\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n if (instance.config.init) instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n InputRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'InputRxjs',\n init: true,\n start: true,\n events: true,\n selectionRange: true,\n css: {\n alternative: 'input-rxjs--alternative',\n withBorder: 'input-rxjs--with-border',\n valid: 'is-valid',\n error: 'has-error',\n active: 'is-active',\n hidden: 'is-hidden',\n disabled: 'is-disabled',\n loading: 'is-loading'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n SelectRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'SelectRxjs',\n init: true,\n start: true,\n events: true,\n css: {\n valid: 'is-valid',\n error: 'has-error',\n active: 'is-active',\n hidden: 'is-hidden',\n withBorder: 'select-rxjs--with-border',\n withLabel: 'select-rxjs--with-label',\n multiple: 'select-rxjs--multiple',\n hasItems: 'has-items',\n disabled: 'is-disabled',\n selected: 'is-selected',\n loading: 'is-loading'\n }\n};\n\nmodule.exports = () => config;\n","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","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","/* ==========================================================================\n CircuitContentCru > Constants > Icons\n ========================================================================== */\n\n/* Constants */\nconst ICON_PLUS = 'plus';\nconst ICON_MINUS = 'minus';\nconst ICON_MAGNIFIER = 'magnifier';\nconst ICON_STAR_FILLED = 'star-filled';\nconst ICON_WIFI = 'wifi';\nconst ICON_CHECK = 'check';\nconst ICON_PLANE = 'plane';\nconst ICON_INFO = 'info';\n\n/* Exports */\nmodule.exports = {\n ICON_PLUS,\n ICON_MINUS,\n ICON_MAGNIFIER,\n ICON_STAR_FILLED,\n ICON_WIFI,\n ICON_CHECK,\n ICON_PLANE,\n ICON_INFO\n};\n","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\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) ? { first: config } : typeof config === 'number' ? { each: config } : 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 = executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(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 !seen && 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 { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.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 { Subject } from '../Subject';\nimport { innerFrom } from '../observable/innerFrom';\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 innerFrom(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","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.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 { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.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","/* ==========================================================================\n CircuitContentCru > Client > Tooltip\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/client/js');\n\nconst TooltipTemplate = require('../../../templates/tooltip');\n\nconst { TOOLTIP_CATEGORY, TOOLTIP_DEPARTURE_DATE } = require('../../../constants/tooltip');\n\nconst configuration = require('../config');\n\n/* Create */\nfunction createTooltip(instance, data) {\n /* Data */\n const { literals, context } = instance.config;\n\n /* Template */\n const template = TooltipTemplate(data, literals, context);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Init */\nfunction initTooltip(instance, data, element) {\n /* Data */\n const { type } = data;\n\n const panel = instance;\n\n if (panel.tooltip) {\n destroyTooltip(instance, data);\n }\n\n panel.tooltip = Tooltip(`[data-component=Tooltip][data-type=${configuration().type.tooltip}]`, {\n trigger: element\n });\n\n /* Image */\n if (!(type === TOOLTIP_DEPARTURE_DATE)) {\n panel.tooltip = {\n ...instance.tooltip,\n image: Image(`[data-component='ImageRxjs'][data-type='${configuration().type.tooltip}']`)\n };\n }\n}\n\n/* Add */\nfunction addTooltip(instance, data, element) {\n /* Node */\n const node = createTooltip(instance, data);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Init */\n initTooltip(instance, data, element);\n}\n\n/* Destroy */\nfunction destroyTooltip(instance, data) {\n /* Data */\n const { type } = data;\n\n const panel = instance;\n\n /* Image */\n if (type === TOOLTIP_CATEGORY) {\n instance.tooltip.image.actions.destroy();\n delete panel.tooltip.image;\n }\n\n /* Remove from DOM */\n instance.tooltip.element.parentNode.removeChild(instance.tooltip.element);\n delete panel.tooltip;\n}\n\n/* Exports */\nmodule.exports = {\n addTooltip,\n destroyTooltip\n};\n","/* ==========================================================================\n ImageRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('./client/js/config');\n\n/* Get resize config */\nconst buildResizeConfig = resize => {\n if (!resize) return false;\n\n return {\n ...configuration().resize,\n ...resize\n };\n};\n\n/* Build src */\nconst buildSrc = (data, context) => {\n /* Data */\n const { src, resize = false, outsider = false } = data;\n\n if (!src) return '';\n\n /* View helpers */\n const { imageResizer, asset } = ViewHelpers(context);\n\n if (outsider) {\n return src;\n }\n\n return resize ? imageResizer(src, buildResizeConfig(resize)) : asset(src);\n};\n\n/* Build alternative */\nconst buildAlternative = (data, context) => {\n /* Data */\n const { alternative, resize = false, outsider = false } = data;\n\n /* View helpers */\n const { imageResizer, asset } = ViewHelpers(context);\n\n if (!alternative) {\n return imageResizer(configuration().lazySrc, buildResizeConfig(resize));\n }\n\n if (outsider) {\n return alternative;\n }\n\n return resize ? imageResizer(alternative, buildResizeConfig(resize)) : asset(alternative);\n};\n\n/* Render link */\nconst renderLink = link => {\n /* Data */\n const { href, title = false, target = false } = link;\n\n return html(`\n \n \n `);\n};\n\n/* Function print image attributes */\nconst getImageAttr = data => {\n const { alt, title = false, width = false, height = false } = data;\n const renderAlt = alt ? `alt='${alt}'` : '';\n const renderTitle = title ? `title='${title}'` : '';\n const renderWidth = width ? `width='${width}'` : '';\n const renderHeight = height ? `height='${height}'` : '';\n\n return `${renderAlt} ${renderTitle} ${renderWidth} ${renderHeight}`;\n};\n\n/* Render lazy image */\nconst renderLazyImage = (data, context) => {\n /* Data */\n const { resize = false } = data;\n\n /* View helpers */\n const { imageResizer } = ViewHelpers(context);\n\n return html(`\n \n `);\n};\n\n/* Render not lazy image */\nconst renderNotLazyImage = (data, context) => {\n /* Data */\n\n const srcParam = buildSrc(data, context);\n const src = !srcParam ? '' : `src='${srcParam}'`;\n\n return html(\n ``\n );\n};\n\n/**\n * ImageRxjs template\n * @param {object} data Object containing the data model for this component.\n * @returns {string} Html\n */\nmodule.exports = function Template(data = {}, context = {}) {\n /* Data */\n const { config = {}, link, figcaption } = data;\n const { styles = [], isLazy = true } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* Template */\n return html(`\n
\n ${isLazy ? renderLazyImage(data, context) : renderNotLazyImage(data, context)}\n ${figcaption ? `
${figcaption}
` : ''}\n ${link ? renderLink(link) : ''}\n
\n `);\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\nconst { css } = require('../../../input-rxjs/client/js/config')();\n\n/* Config */\nconst config = {\n component: 'AutocompleteRxjs',\n init: true,\n start: true,\n selectionRange: true,\n hasAllAirpots: true,\n css: {\n active: css.active,\n alternative: css.alternative,\n disabled: css.disabled,\n error: css.error,\n header: 'autocomplete-rxjs__header',\n hidden: css.hidden,\n keyed: 'is-keyed',\n suggestion: 'autocomplete-rxjs__suggestion',\n valid: css.valid,\n withBorder: css.withBorder,\n loading: 'is-loading'\n },\n type: {\n tooltip: 'autocomplete-suggestion-panel'\n },\n hooks: {\n panelContent: 'data-ui-panel-content',\n suggestion: 'data-suggestions',\n suggestionsList: 'data-list'\n }\n};\n\nmodule.exports = () => config;\n","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 { __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","/* ==========================================================================\n Tooltip > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * Tooltip component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function Tooltip(selector = '[data-component=Tooltip]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n CounterRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'COUNTER::DESTROY';\nconst DISPLAY = 'COUNTER::DISPLAY';\nconst HIDE = 'COUNTER::HIDE';\n\nconst RESET_STATUS = 'COUNTER::RESET_STATUS';\nconst SET_ERROR = 'COUNTER::SET_ERROR';\nconst SET_VALID = 'COUNTER::SET_VALID';\n\nconst DISABLE = 'COUNTER::DISABLE';\nconst ENABLE = 'COUNTER::ENABLE';\n\nconst INCREMENT = 'COUNTER::INCREMENT';\nconst DECREMENT = 'COUNTER::DECREMENT';\nconst SET = 'COUNTER::SET';\n\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\nconst resetStatus = () => ({ type: RESET_STATUS });\nconst setError = () => ({ type: SET_ERROR });\nconst setValid = () => ({ type: SET_VALID });\n\nconst increment = () => ({ type: INCREMENT });\nconst decrement = () => ({ type: DECREMENT });\nconst set = payload => ({ type: SET, payload });\n\nconst disable = () => ({ type: DISABLE });\nconst enable = () => ({ type: ENABLE });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n RESET_STATUS,\n SET_ERROR,\n SET_VALID,\n INCREMENT,\n DECREMENT,\n ENABLE,\n DISABLE,\n SET\n },\n actions: {\n destroy,\n display,\n hide,\n resetStatus,\n setError,\n setValid,\n increment,\n decrement,\n enable,\n disable,\n set\n }\n};\n","/* ==========================================================================\n SelectRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * SelectRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function SelectRxjs(selector = '[data-component=SelectRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n select: instance.element.querySelector('select'),\n label: instance.element.querySelector('label')\n };\n\n /* ID for pairing */\n instance.id = randomId(randomId('select'));\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n if (instance.config.init) instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\n\nconst CHANGE_VALUE = 'AUTOCOMPLETE::CHANGE_VALUE';\nconst CLEAR = 'AUTOCOMPLETE::CLEAR';\nconst CLOSE_SUGGESTIONS = 'AUTOCOMPLETE::CLOSE_SUGGESTIONS';\nconst DESTROY = 'AUTOCOMPLETE::DESTROY';\nconst DISABLE = 'AUTOCOMPLETE::DISABLE';\nconst DISPLAY = 'AUTOCOMPLETE::DISPLAY';\nconst ENABLE = 'AUTOCOMPLETE::ENABLE';\nconst HIDE = 'AUTOCOMPLETE::HIDE';\nconst OPEN_SUGGESTIONS = 'AUTOCOMPLETE::OPEN_SUGGESTIONS';\nconst RESET_STATUS = 'AUTOCOMPLETE::RESET_STATUS';\nconst SET_UI_STATE = 'AUTOCOMPLETE::SET_UI_STATE';\nconst SET_ERROR = 'AUTOCOMPLETE::SET_ERROR';\nconst SET_QUERY = 'AUTOCOMPLETE::SET_QUERY';\nconst SET_SUGGESTIONS = 'AUTOCOMPLETE::SET_SUGGESTIONS';\nconst SET_VALID = 'AUTOCOMPLETE::SET_VALID';\nconst SET_VALUE = 'AUTOCOMPLETE::SET_VALUE';\nconst SYNC_VALUE = 'AUTOCOMPLETE::SYNC_VALUE';\nconst TOGGLE_ACTIVE = 'AUTOCOMPLETE::TOGGLE_ACTIVE';\nconst TOGGLE_LOADING = 'AUTOCOMPLETE::TOGGLE_LOADING';\n\n/* Actions */\n\nconst changeValue = payload => ({ type: CHANGE_VALUE, payload });\nconst clear = () => ({ type: CLEAR });\nconst closeSuggestions = () => ({ type: CLOSE_SUGGESTIONS });\nconst destroy = () => ({ type: DESTROY });\nconst disable = () => ({ type: DISABLE });\nconst display = () => ({ type: DISPLAY });\nconst enable = () => ({ type: ENABLE });\nconst hide = () => ({ type: HIDE });\nconst openSuggestions = payload => ({ type: OPEN_SUGGESTIONS, payload });\nconst resetStatus = () => ({ type: RESET_STATUS });\nconst setUiState = payload => ({ type: SET_UI_STATE, payload });\nconst setError = () => ({ type: SET_ERROR });\nconst setQuery = payload => ({ type: SET_QUERY, payload });\nconst setSuggestions = payload => ({ type: SET_SUGGESTIONS, payload });\nconst setValid = () => ({ type: SET_VALID });\nconst setValue = payload => ({ type: SET_VALUE, payload });\nconst syncValue = () => ({ type: SYNC_VALUE });\nconst toggleActive = () => ({ type: TOGGLE_ACTIVE });\nconst toggleLoading = () => ({ type: TOGGLE_LOADING });\n\n/* Exports */\nmodule.exports = {\n types: {\n CHANGE_VALUE,\n CLEAR,\n CLOSE_SUGGESTIONS,\n DESTROY,\n DISABLE,\n DISPLAY,\n ENABLE,\n HIDE,\n OPEN_SUGGESTIONS,\n RESET_STATUS,\n SET_UI_STATE,\n SET_ERROR,\n SET_QUERY,\n SET_SUGGESTIONS,\n SET_VALID,\n SET_VALUE,\n SYNC_VALUE,\n TOGGLE_ACTIVE,\n TOGGLE_LOADING\n },\n actions: {\n changeValue,\n clear,\n closeSuggestions,\n destroy,\n disable,\n display,\n enable,\n hide,\n openSuggestions,\n resetStatus,\n setUiState,\n setError,\n setQuery,\n setSuggestions,\n setValid,\n setValue,\n syncValue,\n toggleActive,\n toggleLoading\n }\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > constants\n ========================================================================== */\nconst CODE_ARROW_DOWN = 40;\nconst CODE_ARROW_UP = 38;\nconst CODE_ENTER = 13;\nconst CODE_ESC = 27;\nconst CODE_TAB = 9;\n\n/* Exports */\nmodule.exports = {\n APPENDTOPARENT: true,\n GEOLOCATION: false,\n ICONS: {\n AER: 'plane',\n BUS: 'bus',\n CIU: 'building',\n EST: 'train',\n FLIGHTS_COMPANY: 'plane',\n HOT: 'hotel',\n ISL: 'beach',\n PDI: 'marker',\n PUE: 'ferry',\n ZON: 'marker'\n },\n KEY_ARROW_DOWN: CODE_ARROW_DOWN,\n KEY_ARROW_UP: CODE_ARROW_UP,\n KEY_ENTER: CODE_ENTER,\n KEY_ESC: CODE_ESC,\n KEY_TAB: CODE_TAB,\n LIMIT: 120,\n MAX: 20,\n NO_OPEN_SUGGESTIONS_KEYS: [CODE_ENTER, CODE_ESC, CODE_TAB],\n PLACEMENT: 'bottom-start',\n SUGGESTIONS_KEYS: [CODE_ARROW_DOWN, CODE_ARROW_UP, CODE_ENTER, CODE_ESC, CODE_TAB],\n THRESHOLD: 3,\n LOADER_TEMPLATE: '
'\n};\n","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 { 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 return new Observable(function (subscriber) {\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n var id = 0;\n var run = function () {\n if (!subscriber.closed) {\n id = animationFrameProvider.requestAnimationFrame(function (timestamp) {\n id = 0;\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start,\n });\n run();\n });\n }\n };\n run();\n return function () {\n if (id) {\n animationFrameProvider.cancelAnimationFrame(id);\n }\n };\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 { __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 var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.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 { __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 var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.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 ? _super.prototype.execute.call(this, state, delay) : 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 scheduler.flush(this);\n return 0;\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 var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\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 { 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 { 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 var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.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 1;\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';\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 { 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 { __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","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\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 './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, function () { return remainingCompletions--; }, undefined, 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 { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\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); })(innerFrom(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 { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\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)(from(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","import { from } from './from';\nexport function pairs(obj, scheduler) {\n return from(Object.entries(obj), scheduler);\n}\n//# sourceMappingURL=pairs.js.map","import { not } from '../util/not';\nimport { filter } from '../operators/filter';\nimport { innerFrom } from './innerFrom';\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 { 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 './innerFrom';\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 { not } from '../util/not';\nimport { filter } from './filter';\nexport function partition(predicate, thisArg) {\n return function (source) {\n return [filter(predicate, thisArg)(source), filter(not(predicate, thisArg))(source)];\n };\n}\n//# sourceMappingURL=partition.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { raceWith } from './raceWith';\nexport function race() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return raceWith.apply(void 0, __spreadArray([], __read(argsOrArgArray(args))));\n}\n//# sourceMappingURL=race.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = createOperatorSubscriber(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 { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(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 { combineLatest } from '../observable/combineLatest';\nimport { joinAllInternals } from './joinAllInternals';\nexport function combineLatestAll(project) {\n return joinAllInternals(combineLatest, project);\n}\n//# sourceMappingURL=combineLatestAll.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 { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\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 innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(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 { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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 { exhaustMap } from './exhaustMap';\nimport { identity } from '../util/identity';\nexport function exhaustAll() {\n return exhaustMap(identity);\n}\n//# sourceMappingURL=exhaustAll.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = createOperatorSubscriber(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 { createOperatorSubscriber } 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(createOperatorSubscriber(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 { __values } from \"tslib\";\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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 { __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 { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function sample(notifier) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n }, noop));\n });\n}\n//# sourceMappingURL=sample.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\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;\n var resetConnection;\n var subject;\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 = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\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 refCount > 0) {\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 innerFrom(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;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\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(createOperatorSubscriber(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(createOperatorSubscriber(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 { __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 { popScheduler } from '../util/args';\nimport { from } from './from';\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 from(args, scheduler);\n}\n//# sourceMappingURL=of.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 { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\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(createOperatorSubscriber(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 executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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 { 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 var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\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(createOperatorSubscriber(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 if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\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(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","/* ==========================================================================\n CardRequest > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'CARDREQUEST::DESTROY';\nconst DISPLAY = 'CARD_END_GAME::DISPLAY';\nconst HIDE = 'CARD_END_GAME::HIDE';\n\nconst SET_DATA = 'CARD_END_GAME::SET_DATA';\n\nconst CLOSE_SHARE = 'CARD_END_GAME::CLOSE_SHARE';\nconst OPEN_SHARE = 'CARD_END_GAME::OPEN_SHARE';\n\nconst ADD_FAVOURITE = 'CARD_END_GAME::ADD_FAVOURITE';\nconst DELETE_FAVOURITE = 'CARD_END_GAME::DELETE_FAVOURITE';\n\nconst DESTROY_BUTTON = 'CARD_END_GAME::DESTROY_BUTTON';\n\nconst OPEN_TOOLTIP_FLIGHT_HOTEL = 'CARD_END_GAME::OPEN_TOOLTIP_FLIGHT_HOTEL';\nconst CLOSE_TOOLTIP_FLIGHT_HOTEL = 'CARD_END_GAME::CLOSE_TOOLTIP_FLIGHT_HOTEL';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\nconst setData = payload => ({ type: SET_DATA, payload });\n\nconst closeShare = () => ({ type: CLOSE_SHARE });\nconst openShare = () => ({ type: OPEN_SHARE });\n\nconst addFavourite = () => ({ type: ADD_FAVOURITE });\nconst deleteFavourite = () => ({ type: DELETE_FAVOURITE });\nconst destroyButton = () => ({ type: DESTROY_BUTTON });\n\nconst closeTooltipFlightHotel = () => ({ type: CLOSE_TOOLTIP_FLIGHT_HOTEL });\nconst openTooltipFlightHotel = () => ({ type: OPEN_TOOLTIP_FLIGHT_HOTEL });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n SET_DATA,\n CLOSE_SHARE,\n OPEN_SHARE,\n ADD_FAVOURITE,\n DELETE_FAVOURITE,\n DESTROY_BUTTON,\n OPEN_TOOLTIP_FLIGHT_HOTEL,\n CLOSE_TOOLTIP_FLIGHT_HOTEL\n },\n actions: {\n destroy,\n display,\n hide,\n setData,\n closeShare,\n openShare,\n addFavourite,\n deleteFavourite,\n destroyButton,\n openTooltipFlightHotel,\n closeTooltipFlightHotel\n }\n};\n","/* ==========================================================================\n ShareRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'ShareRxjs',\n init: true,\n start: true,\n css: {\n vertical: 'share-rxjs--vertical',\n modal: 'share-rxjs__modal',\n submit: 'share-rxjs__submit',\n input: 'share-rxjs__input',\n visible: 'is-visible'\n },\n type: {\n emailShare: 'share-rxjs-email-share',\n emailModal: 'share-rxjs-email-modal',\n emailSubmit: 'share-rxjs-email-submit',\n emailInput: 'share-rxjs-email-input'\n },\n icon: {\n email: 'envelope',\n facebook: 'facebook',\n twitter: 'twitter',\n whatsapp: 'whatsapp-filled'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n CarouselRxjs\n ========================================================================== */\n\n/* Modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * Client/browser JS\n * @param {string} selector String selector\n * @param {object} config Configuration object to create the carousel instance\n */\nmodule.exports = function CarouselClient(selector = '[data-component=\"CarouselRxjs\"]', configuration = {}) {\n if (elementExist(selector)) {\n /* Create the instance based on prototype */\n const instance = Object.create(prototype);\n\n /* Element reference */\n instance.element = document.querySelector(selector);\n\n /* Id reference */\n instance.id = randomId(randomId('carousel-rxjs'));\n\n /* Hooks */\n instance.hooks = {\n swiper: instance.element.querySelector('[data-swiper]')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n return instance;\n }\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Constants\n ========================================================================== */\n\n/* Params default */\nconst CRUISE_CODE = 'cruiseCode';\nconst NUM_GUESTS = 'numGuests';\nconst PAX_CONFIG = 'paxConfig';\nconst TOTAL_CABINS = 'totalCabins';\nconst TC = 'tc';\nconst BK_DEP = 'bkdep';\nconst BK_HONEY = 'bkhoney';\nconst MC_HONEY = 'mc_honey';\nconst BK_HC = 'bkhc';\nconst MC_HC = 'mc_hc';\nconst BK_CLUBNAME = 'bkclubname';\nconst MC_CLUBNAME = 'mc_clubname';\nconst BK_CLUBSURNAME = 'bkclubsurname';\nconst MC_CLUBSURNAME = 'mc_clubsurname';\nconst BK_PAXES = 'bkpaxes';\nconst BK_CAT = 'bkcat';\nconst BK_ORIGCODE = 'bkorigcode';\nconst COUPON_CODE = 'couponcode';\nconst MC_COUPON_CODE = 'mc_couponcode';\n\n/* Params crudyn */\nconst ORIGIN_CIR = 'originCir';\nconst ORIGIN = 'origin';\nconst ACCOMMODATIONS = 'accommodations';\nconst DAY = 'day';\nconst RESIDENT = 'resident';\nconst HMOON = 'hMoon';\nconst CLUB_CODE = 'clubCode';\nconst CLUB_NAME = 'clubName';\nconst ALTERNATIVE = 'Alternative';\nconst ALTERNATIVE_NIGHTS = 'alternativeNights';\n\n/* Exports */\nmodule.exports = (type = 'default') => {\n const constants = {\n default: {\n CRUISE_CODE,\n NUM_GUESTS,\n TOTAL_CABINS,\n PAX_CONFIG,\n TC,\n BK_DEP,\n BK_HONEY,\n MC_HONEY,\n BK_HC,\n MC_HC,\n BK_CLUBNAME,\n MC_CLUBNAME,\n BK_CLUBSURNAME,\n MC_CLUBSURNAME,\n BK_PAXES,\n ACCOMMODATIONS,\n BK_CAT,\n BK_ORIGCODE,\n COUPON_CODE,\n MC_COUPON_CODE\n },\n crudyn: {\n ORIGIN_CIR,\n ACCOMMODATIONS,\n DAY,\n RESIDENT,\n HMOON,\n CLUB_CODE,\n CLUB_NAME,\n ALTERNATIVE,\n ORIGIN,\n ALTERNATIVE_NIGHTS\n }\n };\n\n return constants[type];\n};\n","/* ==========================================================================\n Helpers > Array\n ========================================================================== */\n\n/**\n * Range\n * @param {number} start\n * @param {number} end\n * @returns {array} Array containing the range specified by the parameters\n */\nfunction range(start, end) {\n return Array(end - start + 1)\n .fill()\n .map((item, index) => start + index);\n}\n\n/**\n * Group By\n * Groups a collection of objects based on key\n * @param {array} Collection\n * @param {function} Key getter\n * @returns {array} Collection grouped by key\n */\nfunction groupBy(list, fn) {\n const map = new Map();\n list.forEach(item => {\n const key = fn(item);\n const collection = map.get(key);\n if (!collection) {\n map.set(key, [item]);\n } else {\n collection.push(item);\n }\n });\n\n return map;\n}\n\n/**\n * Example:\n * collection = [\n * { value: 123, highlight: true },\n * { value: 1 },\n * { value: 213},\n * { value: 122, highlight: true },\n * { value: 4 }\n * ]\n *\n * grouped = groupBy(collection, item => (item.highlight ? 'highlight' : 'other'));\n *\n * grouped Map{\n * highlight: [{ value: 123, highlight: true }, { value: 122, highlight: true }],\n * other: [{ value: 1 }, { value: 213}, { value: 4 }]\n * }\n */\n\n/**\n * Sort by key value\n * Sorts an array of objects by the given key name\n * @param {array} Collection\n * @param {string} Key value\n * @returns {array} Collection ordered by the key value\n */\nfunction sortByKey(collection = [], key = '') {\n if (!key) return collection.slice();\n\n return collection.sort((a, b) => (a[key] > b[key] ? -1 : 1));\n}\n\n/**\n * Example:\n * collection: [\n * { value: 123, highlight: true },\n * { value: 1 },\n * { value: 213},\n * { value: 122, highlight: true },\n * { value: 4 }\n * ]\n *\n * sorted = sortByKey(collection, 'value');\n *\n * sorted [\n * { value: 213},\n * { value: 123, highlight: true },\n * { value: 122, highlight: true },\n * { value: 4 },\n * { value: 1 },\n * ]\n */\n\n/**\n * Sort by key value lesser\n * Sorts an array of objects by the given key name\n * @param {array} Collection\n * @param {string} Key value\n * @returns {array} Collection ordered lesser by the key value\n */\nfunction sortByKeyLesser(collection = [], key = '') {\n if (!key) return collection.slice();\n\n return collection.sort((a, b) => (a[key] < b[key] ? -1 : 1));\n}\n\n/**\n * Example:\n * collection: [\n * { value: 123, highlight: true },\n * { value: 1 },\n * { value: 213},\n * { value: 122, highlight: true },\n * { value: 4 }\n * ]\n *\n * sorted = sortByKeyLesser(collection, 'value');\n *\n * sorted [\n * { value: 1 },\n * { value: 4 },\n * { value: 122, highlight: true },\n * { value: 123, highlight: true },\n * { value: 213}\n * ]\n */\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction containsArray(superset = [], subset = []) {\n if (subset.length === 0) {\n return false;\n }\n return subset.every(value => superset.indexOf(value) >= 0);\n}\n\n/**\n * Example\n * collection: [7, 23, 10, 1, 67, 990, 5, 12, 456, 235, 3, 567]\n *\n * a: [5, 1, 3]\n * b: [5, 1, 3, 4]\n *\n * containsArray(collection, a) -> true\n * containsArray(collection, b) -> false\n *\n */\n\n/* Exports */\nmodule.exports = {\n range,\n groupBy,\n sortByKey,\n sortByKeyLesser,\n containsArray\n};\n","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 { 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","/* ==========================================================================\n CardRequest > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CardRequest',\n init: true,\n start: true,\n anchorFlightHotel: 'AnchorFlightHotel',\n type: {\n mapImage: 'map-image',\n shipImage: 'ship-image',\n companyImage: 'company-image',\n cruDynImage: 'cru-dyn-image',\n promoImage: 'promo-image',\n fav: 'card-request-fav',\n share: 'card-request-share',\n quote: 'card-request-quote'\n },\n css: {\n hidden: 'is-hidden',\n logo: 'card-request__logo',\n ship: 'card-request__image-ship',\n map: 'card-request__image-map',\n visible: 'is-visible',\n right: 'is-right',\n button: {\n base: 'card-request__button',\n fav: 'card-request__button--fav'\n },\n quote: 'card-request__link'\n },\n icon: {\n heart: 'heart',\n heartFilled: 'heart-filled',\n share: 'share-filled',\n starFilled: 'star-filled'\n },\n logoConfig: {\n height: 34,\n width: 125,\n suboperation: ''\n },\n mapConfig: {\n height: 190,\n width: 280,\n suboperation: ''\n },\n mapRiverConfig: {\n height: 165,\n width: 235,\n suboperation: ''\n },\n shipConfig: {\n height: 165,\n width: 160\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ModalRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Button = require('../../../button-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ModalRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ModalRxjs(selector = '[data-component=ModalRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Close */\n if (instance.config.hasClose) {\n instance.close = Button(`${selector} [data-component='ButtonRxjs'][data-type='${config().type.close}']`, {\n ...configuration.close\n });\n }\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n ButtonRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst { sanitizeSingleQuote } = require('@bluekiri/alexandria/helpers/sanitize');\n\nconst configuration = require('./client/js/config');\n\n/**\n * ButtonRxjs template\n * @param {object} data Object containing the data model for this component.\n * @returns {string} Html\n */\nmodule.exports = function Template(data = {}, context = {}) {\n /* Data */\n const { config = {}, content = '', icon, type = 'button', title = '', disabled = false, hasLoader = true } = data;\n const { styles = [] } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* View Helpers */\n const { icon: renderIcon } = ViewHelpers(context);\n\n /* Return */\n return html(`\n \n `);\n};\n","/* ==========================================================================\n InputRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('./client/js/config');\n\nconst getStyles = data => {\n const { value, isAlternative, hidden, active, disabled } = data;\n\n return [\n isAlternative ? configuration().css.alternative : '',\n disabled ? configuration().css.disabled : '',\n hidden ? configuration().css.hidden : '',\n active || (value !== undefined && value !== null) ? configuration().css.active : ''\n ];\n};\n/**\n * InputRxjs template\n * @param {object} data Object containing the data model for this component.\n * @returns {string} Html\n */\nmodule.exports = function Template(data = {}, context = {}) {\n /* Data */\n const {\n config = {},\n label,\n icon,\n placeholder,\n type = 'text',\n name,\n title,\n content,\n value,\n min = false,\n max = false,\n maxlength = false,\n disabled = false,\n hidden = false,\n active = false,\n hasLoader = true,\n step = false\n } = data;\n const { styles = [] } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* Template */\n return html(`\n
\n\n ${label ? `` : ''}\n ${icon ? ViewHelpers(context).icon(icon) : ''}\n \n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories\n ========================================================================== */\n\n/* Modules */\nconst { take } = require('rxjs/operators');\n\nconst { actions, types } = require('../store/actions');\n\nconst { addDepartures, initDepartures, destroyDepartures } = require('./departures');\nconst { addPricesMin, initPricesMin, destroyPricesMin } = require('./prices-min');\nconst { initAdvantages } = require('./advantages');\n\nconst Services = require('../../../../../services/models');\n\nconst Mapper = require('./mapper');\n\nconst { NUM_GUESTS, PAX_CONFIG, TOTAL_CABINS } = require('./constants')();\n\n/* Get departures */\nfunction getDepartures(instance, values) {\n /* Context */\n const { context } = instance.config;\n\n /* Service */\n const { getModel } = Services(context);\n\n /* Get endpoints */\n const { departures } = instance.config.endpoints;\n\n /* Get name component and arguments */\n const { Name, Arguments } = departures;\n\n /* Get new data */\n getModel({\n Name,\n Arguments: Mapper(Arguments, values)\n })\n .pipe(take(1))\n .subscribe(data => {\n if (data && data.error) {\n return;\n }\n\n /* Destroy */\n destroyDepartures(instance);\n destroyPricesMin(instance);\n\n /* Add Skeletor */\n\n /* Dispatch */\n instance.actions.setCategoriesPrices(data);\n\n /* Prices Min */\n addPricesMin(instance);\n\n /* Departures */\n addDepartures(instance);\n\n /* Destroy Skeletor */\n });\n}\n\n/* Init */\nfunction initCategories(instance) {\n const panel = instance;\n\n /* Data */\n const { categoriesPrices, crudyn, multicabin } = instance.config;\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n categories: instance.element.querySelector('[data-categories]')\n };\n\n /* Reference */\n panel.categories = {};\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n setCategoriesPrices: payload => {\n return instance.store.dispatch(actions.setCategoriesPrices(payload));\n }\n };\n\n if (!crudyn) {\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n changePassengersFromCategories: instance.store.subscribe((state, action) => {\n if (action.type !== types.CHANGE_PASSENGERS) return;\n\n /* Get rooms */\n const { rooms } = instance.store.select('data');\n\n /**\n * Check rooms if is bigger than 1 to break function because this is just for\n * only cruises logic.\n * If rooms is 2 then addRoom action/reaction will be used.\n */\n if (rooms > 1) return;\n\n /* Data */\n const { passengers, index } = action.payload;\n const { ages } = instance.store.select('data').informations[index];\n\n /* Values */\n const { ExcludedBabies } = instance.config;\n\n const values = { [NUM_GUESTS]: `${passengers}` };\n\n if (ExcludedBabies === 1 || ExcludedBabies) {\n values[PAX_CONFIG] = `${ages}`;\n }\n\n getDepartures(instance, values);\n })\n };\n }\n\n if (multicabin) {\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n addRoom: instance.store.subscribe((state, action) => {\n if (action.type !== types.ADD_ROOM) return;\n /* Data */\n const { rooms } = state.data;\n\n if (rooms > 2) return;\n\n /* Values */\n const values = {\n [TOTAL_CABINS]: `${rooms}`\n };\n\n getDepartures(instance, values);\n }),\n deleteRoom: instance.store.subscribe((state, action) => {\n if (action.type !== types.DELETE_ROOM) return;\n /* Data */\n const { rooms } = state.data;\n\n if (rooms >= 2) return;\n\n /* Values */\n const values = {\n [TOTAL_CABINS]: `${rooms}`\n };\n\n if (rooms === 1) {\n /* Get rooms */\n const { passengers } = instance.store.select('data').informations.reduce((acc, cur) => {\n if (cur) return cur;\n return acc;\n }, {});\n values[NUM_GUESTS] = `${passengers}`;\n }\n\n getDepartures(instance, values);\n })\n };\n }\n\n /* Prices Min */\n initPricesMin(instance);\n\n /* Departures */\n initDepartures(instance);\n\n /* Advantages */\n initAdvantages(instance);\n\n /* Sync */\n /* Dispatch */\n instance.actions.setCategoriesPrices(categoriesPrices);\n}\n\n/* Destroy */\nfunction destroyCategories(instance) {\n const panel = instance;\n\n /* Prices Min */\n destroyPricesMin(instance);\n\n /* Departures */\n destroyDepartures(instance);\n\n /* Remove from DOM */\n instance.hooks.categories.parentNode.removeChild(instance.hooks.categories);\n\n /* Reactions */\n instance.reactions.changePassengersFromCategories.unsubscribe();\n delete panel.reactions.changePassengersFromCategories;\n\n /* Actions */\n delete panel.actions.setCategoriesPrices;\n\n /* Reference */\n delete panel.categories;\n\n /* Hooks */\n delete panel.hooks.categories;\n}\n\n/* Exports */\nmodule.exports = {\n initCategories,\n destroyCategories,\n getDepartures\n};\n","/* ==========================================================================\n CheckboxRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'CHECKBOX::DESTROY';\nconst DISPLAY = 'CHECKBOX::DISPLAY';\nconst HIDE = 'CHECKBOX::HIDE';\nconst RESET_STATUS = 'CHECKBOX::RESET_STATUS';\nconst SET_ERROR = 'CHECKBOX::SET_ERROR';\nconst SET_VALID = 'CHECKBOX::SET_VALID';\n\nconst TOGGLE = 'CHECKBOX::TOGGLE';\n\nconst DISABLE = 'TOGGLE::DISABLE';\nconst ENABLE = 'TOGGLE::ENABLE';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\nconst resetStatus = () => ({ type: RESET_STATUS });\nconst setError = () => ({ type: SET_ERROR });\nconst setValid = () => ({ type: SET_VALID });\n\nconst toggle = () => ({ type: TOGGLE });\n\nconst disable = () => ({ type: DISABLE });\nconst enable = () => ({ type: ENABLE });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n RESET_STATUS,\n SET_ERROR,\n SET_VALID,\n TOGGLE,\n DISABLE,\n ENABLE\n },\n actions: {\n destroy,\n display,\n hide,\n resetStatus,\n setError,\n setValid,\n toggle,\n disable,\n enable\n }\n};\n","/* ==========================================================================\n SelectRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst { sanitizeObject, sanitizeSingleQuote } = require('../../helpers/sanitize');\n\nconst configuration = require('./client/js/config');\n\n/**\n * SelectRxjs template\n * @param {object} data Object containing the data model for this component.\n * @returns {string} Html\n */\nmodule.exports = function Template(data = {}) {\n /* Data */\n const { config = {}, label, items, value, multiple = false, disabled = false, hasLoader = true } = data;\n const { styles = [], literals = {} } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* Template */\n return html(`\n
\n\n ${label ? `` : ''}\n \n
\n `);\n};\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n innerFrom(closingNotifier).subscribe(createOperatorSubscriber(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 { createOperatorSubscriber } 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(createOperatorSubscriber(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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { asyncScheduler } from '../scheduler/async';\nimport { popScheduler } from '../util/args';\nimport { executeSchedule } from '../util/executeSchedule';\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 executeSchedule(subs, scheduler, function () { return emit(record_1); }, bufferTimeSpan);\n }\n };\n if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {\n executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);\n }\n else {\n restartOnEmit = true;\n }\n startBuffer();\n var bufferTimeSubscriber = createOperatorSubscriber(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/innerFrom';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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(createOperatorSubscriber(subscriber, emitBuffer, noop)));\n }, noop));\n source.subscribe(createOperatorSubscriber(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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\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 = createOperatorSubscriber(subscriber, openBuffer, noop)));\n };\n openBuffer();\n source.subscribe(createOperatorSubscriber(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/innerFrom';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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 { combineLatestAll } from './combineLatestAll';\nexport var combineAll = combineLatestAll;\n//# sourceMappingURL=combineAll.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 { 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 { 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 { 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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\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(createOperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = createOperatorSubscriber(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 { createOperatorSubscriber } 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(createOperatorSubscriber(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 { 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 { createOperatorSubscriber } from './OperatorSubscriber';\nexport function dematerialize() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (notification) { return observeNotification(notification, subscriber); }));\n });\n}\n//# sourceMappingURL=dematerialize.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { innerFrom } from '../observable/innerFrom';\nexport function distinct(keySelector, flushes) {\n return operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(createOperatorSubscriber(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 && innerFrom(flushes).subscribe(createOperatorSubscriber(subscriber, function () { return distinctKeys.clear(); }, noop));\n });\n}\n//# sourceMappingURL=distinct.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 { 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 { createOperatorSubscriber } from './OperatorSubscriber';\nexport function every(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(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 { exhaustAll } from './exhaustAll';\nexport var exhaust = exhaustAll;\n//# sourceMappingURL=exhaust.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 { 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 { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber, 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 activeGroups = 0;\n var teardownAttempted = false;\n var groupBySourceSubscriber = new OperatorSubscriber(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 = createOperatorSubscriber(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(); }, function () {\n teardownAttempted = true;\n return activeGroups === 0;\n });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable(function (groupSubscriber) {\n activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\n//# sourceMappingURL=groupBy.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function isEmpty() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(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 { 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 { createOperatorSubscriber } from './OperatorSubscriber';\nexport function materialize() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(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 { 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 { __read, __spreadArray } from \"tslib\";\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { onErrorResumeNext as oERNCreate } from '../observable/onErrorResumeNext';\nexport function onErrorResumeNextWith() {\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 function (source) { return oERNCreate.apply(void 0, __spreadArray([source], __read(nextSources))); };\n}\nexport var onErrorResumeNext = onErrorResumeNextWith;\n//# sourceMappingURL=onErrorResumeNextWith.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(createOperatorSubscriber(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 { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { timer } from '../observable/timer';\nexport function repeat(countOrConfig) {\n var _a;\n var count = Infinity;\n var delay;\n if (countOrConfig != null) {\n if (typeof countOrConfig === 'object') {\n (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay);\n }\n else {\n count = countOrConfig;\n }\n }\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var soFar = 0;\n var sourceSub;\n var resubscribe = function () {\n sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();\n sourceSub = null;\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(soFar));\n var notifierSubscriber_1 = createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n subscribeToSource();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n subscribeToSource();\n }\n };\n var subscribeToSource = function () {\n var syncUnsub = false;\n sourceSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (sourceSub) {\n resubscribe();\n }\n else {\n syncUnsub = true;\n }\n }\n else {\n subscriber.complete();\n }\n }));\n if (syncUnsub) {\n resubscribe();\n }\n };\n subscribeToSource();\n });\n}\n//# sourceMappingURL=repeat.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } 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 innerFrom(notifier(completions$)).subscribe(createOperatorSubscriber(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(createOperatorSubscriber(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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\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(createOperatorSubscriber(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 = createOperatorSubscriber(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 { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject();\n innerFrom(notifier(errors$)).subscribe(createOperatorSubscriber(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 { 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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\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 = createOperatorSubscriber(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 innerFrom(compareTo).subscribe(createSubscriber(bState, aState));\n });\n}\nfunction createState() {\n return {\n buffer: [],\n complete: false,\n };\n}\n//# sourceMappingURL=sequenceEqual.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b, _c;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, 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 { createOperatorSubscriber } 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(createOperatorSubscriber(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 { createOperatorSubscriber } 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(createOperatorSubscriber(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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function skipUntil(notifier) {\n return operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = createOperatorSubscriber(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(createOperatorSubscriber(subscriber, function (value) { return taking && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipUntil.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(createOperatorSubscriber(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 { 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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(createOperatorSubscriber(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 { createOperatorSubscriber } 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(createOperatorSubscriber(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 { createOperatorSubscriber } 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(createOperatorSubscriber(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 { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function timeInterval(scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var last = scheduler.now();\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var now = scheduler.now();\n var interval = now - last;\n last = now;\n subscriber.next(new TimeInterval(value, interval));\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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { innerFrom } from '../observable/innerFrom';\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(createOperatorSubscriber(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n innerFrom(windowBoundaries).subscribe(createOperatorSubscriber(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 { createOperatorSubscriber } 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(createOperatorSubscriber(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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { popScheduler } from '../util/args';\nimport { executeSchedule } from '../util/executeSchedule';\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 executeSchedule(subs, scheduler, function () { return closeWindow(record_1); }, windowTimeSpan);\n }\n };\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true);\n }\n else {\n restartOnClose = true;\n }\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(createOperatorSubscriber(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/innerFrom';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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(createOperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n }, noop));\n source.subscribe(createOperatorSubscriber(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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\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 = createOperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n };\n openWindow();\n source.subscribe(createOperatorSubscriber(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 { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\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(createOperatorSubscriber(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(createOperatorSubscriber(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 } 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","/* ==========================================================================\n TabsRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'TabsRxjs',\n init: true,\n start: true,\n css: {\n vertical: 'tabs-rxjs--vertical',\n navigation: 'tabs-rxjs__navigation',\n active: 'is-active',\n disabled: 'is-disabled'\n },\n type: {\n navigation: 'tabs-rxjs-navigation',\n image: 'tabs-rxjs-image'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n GalleryRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'GalleryRxjs',\n init: true,\n start: true,\n css: {},\n type: {\n image: 'gallery-image',\n video: 'gallery-video'\n }\n};\n\nmodule.exports = () => config;\n","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 } 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","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 { 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","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 { Observable } from '../Observable';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { innerFrom } from './innerFrom';\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 new Observable(function (subscriber) {\n var sourceIndex = 0;\n var subscribeNext = function () {\n if (sourceIndex < nextSources.length) {\n var nextSource = void 0;\n try {\n nextSource = innerFrom(nextSources[sourceIndex++]);\n }\n catch (err) {\n subscribeNext();\n return;\n }\n var innerSubscriber = new OperatorSubscriber(subscriber, undefined, noop, noop);\n nextSource.subscribe(innerSubscriber);\n innerSubscriber.add(subscribeNext);\n }\n else {\n subscriber.complete();\n }\n };\n subscribeNext();\n });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } 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(createOperatorSubscriber(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 { __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 { operate } from '../util/lift';\nimport { concatAll } from './concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from '../observable/from';\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()(from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=concat.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from '../observable/from';\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)(from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=merge.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 { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.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 { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.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","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\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 { 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","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __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 { 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","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 { 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 { 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","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 { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.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","export function not(pred, thisArg) {\n return function (value, index) { return !pred.call(thisArg, value, index); };\n}\n//# sourceMappingURL=not.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 { createOperatorSubscriber } 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(createOperatorSubscriber(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","/* ==========================================================================\n ButtonRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'BUTTON::DESTROY';\nconst DISABLE = 'BUTTON::DISABLE';\nconst DISPLAY = 'BUTTON::DISPLAY';\nconst ENABLE = 'BUTTON::ENABLE';\nconst HIDE = 'BUTTON::HIDE';\n\nconst SET_CONTENT = 'BUTTON::SET_CONTENT';\nconst SET_ICON = 'BUTTON::SET_ICON';\n\nconst TOGGLE_LOADING = 'BUTTON::TOGGLE_LOADING';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst disable = () => ({ type: DISABLE });\nconst display = () => ({ type: DISPLAY });\nconst enable = () => ({ type: ENABLE });\nconst hide = () => ({ type: HIDE });\n\nconst setContent = payload => ({ type: SET_CONTENT, payload });\nconst setIcon = payload => ({ type: SET_ICON, payload });\n\nconst toggleLoading = () => ({ type: TOGGLE_LOADING });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISABLE,\n DISPLAY,\n ENABLE,\n HIDE,\n SET_CONTENT,\n SET_ICON,\n TOGGLE_LOADING\n },\n actions: {\n destroy,\n disable,\n display,\n enable,\n hide,\n setContent,\n setIcon,\n toggleLoading\n }\n};\n","/* ==========================================================================\n ButtonRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'ButtonRxjs',\n init: true,\n start: true,\n events: true,\n css: {\n hidden: 'is-hidden',\n disable: 'is-disabled',\n loading: 'is-loading'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n FloatingHeader > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'FloatingHeader',\n init: true,\n start: true,\n css: {\n button: 'floating-header__button',\n firstButton: 'floating-header__button--first',\n selected: 'floating-header__button--selected',\n fixed: 'is-fixed',\n quote: 'floating-header__link'\n },\n type: {\n button: 'button-component-anchor',\n quote: 'floating-header-quote-button'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ImageRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'ImageRxjs',\n init: true,\n start: true,\n css: {\n load: 'lazyload',\n loading: 'lazyloading',\n loaded: 'lazyloaded',\n hidden: 'is-hidden',\n vertical: 'is-vertical'\n },\n lazySrc: '/comun/images/shim.gif',\n resize: {\n width: 100,\n height: 100,\n operation: 'resize',\n suboperation: 'crop',\n quality: 85\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ShareRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'SHARE::DESTROY';\n\nconst ENABLE_EMAIL = 'SHARE::ENABLE_EMAIL';\n\nconst OPEN_MODAL = 'SHARE::OPEN_MODAL';\nconst CLOSE_MODAL = 'SHARE::CLOSE_MODAL';\n\nconst CLOSE_LEGAL = 'SHARE::CLOSE_LEGAL';\nconst OPEN_LEGAL = 'SHARE::OPEN_LEGAL';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\nconst enableEmail = () => ({ type: ENABLE_EMAIL });\n\nconst openModal = () => ({ type: OPEN_MODAL });\nconst closeModal = () => ({ type: CLOSE_MODAL });\n\nconst closeLegal = () => ({ type: CLOSE_LEGAL });\nconst openLegal = () => ({ type: OPEN_LEGAL });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n ENABLE_EMAIL,\n OPEN_MODAL,\n CLOSE_MODAL,\n CLOSE_LEGAL,\n OPEN_LEGAL\n },\n actions: {\n destroy,\n enableEmail,\n openModal,\n closeModal,\n closeLegal,\n openLegal\n }\n};\n","/* ==========================================================================\n ModalRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { addStyle, addData, prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst ButtonTemplate = require('../button-rxjs/template');\n\nconst configuration = require('./client/js/config');\n\n/* Close render */\nconst closeRender = context =>\n ButtonTemplate(\n addStyle(\n addData(\n {\n icon: configuration().icon.cancel\n },\n {\n type: configuration().type.close\n }\n ),\n [configuration().css.close]\n ),\n context\n );\n\n/**\n * ModalRxjs template\n * @param {object} data Object containing the data model for this component.\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Template(data, context) {\n /* Data */\n const { config = {}, title = '', body = '', footer = '' } = data;\n const { styles = [], hasClose = true } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* Template */\n return html(`\n
\n \n
\n `);\n};\n","/* ==========================================================================\n Helpers > Sanitize\n ========================================================================== */\n\n/**\n * Sanitize Single Quote\n * @param {string} Text\n */\nfunction sanitizeSingleQuote(text = '') {\n return text.replace(/'/g, ''');\n}\n\n/**\n * Sanitize object\n * @param {object}\n * @return {object} cloned object with values sanitized\n */\nfunction sanitizeObject(obj = {}) {\n if (Object.keys(obj) < 1) return obj;\n\n /* Transform to string first */\n const objString = JSON.stringify(obj);\n\n return JSON.parse(objString, (key, value) => {\n return typeof value === 'string' ? sanitizeSingleQuote(value) : value;\n });\n}\n\n/* Exports */\nmodule.exports = {\n sanitizeSingleQuote,\n sanitizeObject\n};\n","/* ==========================================================================\n Helpers > Sanitize\n ========================================================================== */\n\n/**\n * Sanitize Single Quote\n * @param {string} Text\n */\nfunction sanitizeSingleQuote(text = '') {\n return text.replace(/'/g, ''');\n}\n\n/**\n * Sanitize object\n * @param {object}\n * @return {object} cloned object with values sanitized\n */\nfunction sanitizeObject(obj = {}) {\n if (Object.keys(obj) < 1) return obj;\n\n /* Transform to string first */\n const objString = JSON.stringify(obj);\n\n return JSON.parse(objString, (key, value) =>\n typeof value === 'string' ? sanitizeSingleQuote(value.replace(/"/g, '\"')) : value\n );\n}\n\n/* Exports */\nmodule.exports = {\n sanitizeSingleQuote,\n sanitizeObject\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Prices > Groups > Utils\n ========================================================================== */\n\n/* Modules */\nconst configuration = require('../../../../../config');\n\n/* Set active */\nfunction setActive(instance, groupEl = null) {\n if (!groupEl) {\n return;\n }\n\n /* Add active */\n setTimeout(() => {\n const panel = instance;\n\n groupEl.classList.add(configuration().css.isActive);\n\n panel.hooks.groupActive = groupEl;\n }, 50);\n}\n\n/* Unset active */\nfunction unsetActive(instance, groupEl = null) {\n if (!groupEl) {\n return;\n }\n\n /* Remove active */\n setTimeout(() => {\n const panel = instance;\n\n groupEl.classList.remove(configuration().css.isActive);\n\n panel.hooks.groupActive = null;\n }, 50);\n}\n\nfunction expandAndActive(instance) {\n /* Get params from config */\n const { departureDate, categoryGroupCode } = instance.config.categoriesPrices;\n\n if (!departureDate) return;\n\n /* Reference */\n const { crudyn, multicabine } = instance.config;\n const { element, swiper } = instance.departures;\n const departuresEls = [...element.querySelectorAll('[data-departure]')];\n const departureEl = departuresEls.filter(item => item.dataset.departure === departureDate)[0];\n\n const groupEl = departureEl.querySelector(`[data-group='${+categoryGroupCode}']`);\n\n /* Action to check collapsed groupe and active departure */\n const checkActive = () => {\n /* Select Active price */\n const { groupExpanded } = instance.store.select('data');\n const groupElExpanded = departureEl.querySelector(`[data-group='${+groupExpanded}']`);\n\n if (groupElExpanded) {\n /* Dispatch */\n if (!(+categoryGroupCode === groupExpanded)) instance.actions.collapseGroup(+groupExpanded);\n\n unsetActive(instance, groupElExpanded);\n }\n\n /* Expand */\n if (!(+categoryGroupCode === groupExpanded)) {\n /* Dispatch */\n instance.actions.expandGroup(+categoryGroupCode);\n\n /* Set active */\n setActive(instance, groupEl);\n\n return;\n }\n\n /* Check same groupe */\n if (+categoryGroupCode === groupExpanded) {\n /* Unset active */\n const { groupActive } = instance.hooks;\n\n unsetActive(instance, groupActive);\n\n /* Set active */\n setActive(instance, groupEl);\n }\n };\n\n /* Check active */\n if (groupEl) checkActive();\n\n /* Navigate to the slide */\n swiper.slideTo(departuresEls.indexOf(departureEl));\n if (crudyn || multicabine) {\n departuresEls.map(item => item.querySelector('[data-item]').classList.remove('is-active'));\n departureEl.querySelector('[data-item]').classList.add('is-active');\n }\n}\n\n/* Exports */\nmodule.exports = {\n setActive,\n unsetActive,\n expandAndActive\n};\n","/* ==========================================================================\n Validations\n ========================================================================== */\n\n/* Modules */\nconst { isValidEmail } = require('./email');\nconst { isValidName } = require('./name');\n\n/* Exports */\nmodule.exports = {\n isValidEmail,\n isValidName\n};\n","/* ==========================================================================\n CheckboxRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CheckboxRxjs',\n init: true,\n start: true,\n css: {\n error: 'has-error',\n hidden: 'is-hidden',\n valid: 'is-valid',\n disabled: 'is-disabled',\n withBorder: 'checkbox-rxjs--with-border'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n CounterRxjs > Client > UI\n ========================================================================== */\n\n/* Modules */\n\n/* Update UI */\nfunction updateUI(value, instance) {\n const { min, max } = instance.config;\n const { increment, decrement } = instance;\n const valueEl = instance.hooks.value;\n\n /* Clear first */\n [increment, decrement].forEach(item => item.actions.enable());\n\n /* Min */\n if (value === min) {\n decrement.actions.disable();\n }\n\n /* Max */\n if (value === max) {\n increment.actions.disable();\n }\n\n /* Set Value to UI */\n if (!(value < min || value > max)) {\n valueEl.innerText = value;\n }\n}\n\n/* Exports */\nmodule.exports = {\n updateUI\n};\n","/* ==========================================================================\n CounterRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CounterRxjs',\n init: true,\n start: true,\n events: true,\n css: {\n valid: 'is-valid',\n error: 'has-error',\n hidden: 'is-hidden',\n disabled: 'is-disabled'\n },\n type: {\n increment: 'counter-increment',\n decrement: 'counter-decrement'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n HeaderByl > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'HEADER_BYL::DESTROY';\n\nconst OPEN_LANG = 'HEADER_BYL::OPEN_LANG';\nconst CLOSE_LANG = 'HEADER_BYL::CLOSE_LANG';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\nconst openLang = () => ({ type: OPEN_LANG });\nconst closeLang = () => ({ type: CLOSE_LANG });\n\n/* Export */\nmodule.exports = {\n types: {\n DESTROY,\n OPEN_LANG,\n CLOSE_LANG\n },\n actions: {\n destroy,\n openLang,\n closeLang\n }\n};\n","/* ==========================================================================\n HeaderByl > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'HeaderByl',\n init: true,\n type: {\n languages: 'header-languages',\n logoFlag: 'header-flag',\n logoLogi: 'header-logo-logi',\n companyLogo: 'header-company-logo',\n flag: 'header-flag',\n modal: 'header-modal-origins',\n certificateImg: 'certificate-img',\n secondaryImg: 'secondary-img'\n },\n css: {\n logoLogi: 'header-byl-logoLogi',\n companyLogo: 'header-byl-companyLogo',\n visible: 'is-visible',\n vertical: 'is-vertical',\n modal: 'header-byl__modal',\n selectOrigin: 'header-byl__origins',\n secondaryImg: 'header-byl__secondary-img'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n CollapseRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'COLLAPSE::DESTROY';\nconst DISPLAY = 'COLLAPSE::DISPLAY';\nconst HIDE = 'COLLAPSE::HIDE';\n\nconst TOGGLE_COLLAPSE = 'COLLAPSE::TOGGLE_COLLAPSE';\nconst SET_COLLAPSE = 'COLLAPSE::SET_COLLAPSE';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\nconst toggleCollapse = () => ({ type: TOGGLE_COLLAPSE });\nconst setCollapse = payload => ({ type: SET_COLLAPSE, payload });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n TOGGLE_COLLAPSE,\n SET_COLLAPSE\n },\n actions: {\n destroy,\n display,\n hide,\n toggleCollapse,\n setCollapse\n }\n};\n","/* ==========================================================================\n GalleryRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'GALLERYRXJS::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n Toast > Client > Config\n ========================================================================== */\n\n/* Config */\nconst config = {\n component: 'Toast',\n type: 'toast',\n init: true,\n start: true,\n iconName: 'cancel',\n css: {\n hidden: 'is-hidden',\n fadeIn: 'fadeIn',\n fadeOut: 'fadeOut'\n },\n intervalsOpen: 2000,\n intervalsClose: 5500,\n delays: 2000\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n Toast > Client > Store > actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'TOAST::DESTROY';\nconst DISPLAY = 'TOAST::DISPLAY';\nconst ENABLE = 'TOAST::ENABLE';\nconst DISABLE = 'TOAST::DISABLE';\nconst HIDE = 'TOAST::HIDE';\nconst CLOSE = 'TOAST::CLOSE';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = payload => ({ type: DISPLAY, payload });\nconst hide = () => ({ type: HIDE });\n\nconst disable = () => ({ type: DISABLE });\nconst enable = payload => ({ type: ENABLE, payload });\n\nconst close = () => ({ type: CLOSE });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n ENABLE,\n DISABLE,\n HIDE,\n CLOSE\n },\n actions: {\n destroy,\n display,\n hide,\n enable,\n disable,\n close\n }\n};\n","/* ==========================================================================\n MainRequestCru > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'MAINREQUESTCRU::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n FloatingHeader > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'FLOATINGHEADER::DESTROY';\nconst TOGGLE_FIXED = 'FLOATINGHEADER::TOGGLE_FIXED';\nconst ACTIVE_BUTTON = 'FLOATINGHEADER::ACTIVE_BUTTON';\nconst SCROLL_TO = 'FLOATINGHEADER::SCROLL_TO';\nconst LOCK_SCROLL = 'FLOATINGHEADER::LOCK_SCROLL';\nconst UNLOCK_SCROLL = 'FLOATINGHEADER::UNLOCK_SCROLL';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst toggleFixed = () => ({ type: TOGGLE_FIXED });\nconst activeButton = payload => ({ type: ACTIVE_BUTTON, payload });\nconst scrollTo = payload => ({ type: SCROLL_TO, payload });\nconst lockScroll = () => ({ type: LOCK_SCROLL });\nconst unlockScroll = () => ({ type: UNLOCK_SCROLL });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n TOGGLE_FIXED,\n ACTIVE_BUTTON,\n SCROLL_TO,\n LOCK_SCROLL,\n UNLOCK_SCROLL\n },\n actions: {\n destroy,\n toggleFixed,\n activeButton,\n scrollTo,\n lockScroll,\n unlockScroll\n }\n};\n","const currencySymbols = {\n USD: '$',\n CAD: '$',\n BRL: 'R$',\n GBP: '£',\n EUR: '€',\n MXN: '$',\n RUB: '₽',\n AED: 'AED'\n};\n\nconst currencyPositionsByMarket = {\n br: -1,\n us: -1,\n gb: -1,\n it: -1,\n mx: 2,\n ae: -1,\n ca: 2\n};\n\nconst currencyPositionsByLanguage = {\n br: -1,\n en: -1,\n it: -1,\n mx: 2,\n ae: -1\n};\n\nconst decimalPosition = lang => {\n switch (lang) {\n case 'en':\n case 'fi':\n case 'mx':\n case 'us':\n case 'he':\n case 'ar':\n case 'tr':\n return '.';\n default:\n return ',';\n }\n};\n\nconst decimals = 2;\n\n/**\n * Price Formatter\n * @param {object} context Context object passed from back\n */\nmodule.exports = function PriceFormatter(context = {}, useMarket = false) {\n const currencyPosition = useMarket\n ? currencyPositionsByMarket[getMarket()] || 1\n : currencyPositionsByLanguage[getLanguage()] || 1;\n const decimalCharacter = decimalPosition(getLanguage());\n\n return {\n /**\n * Prints price formatted for product cards\n * @param {number} value - price of the product\n * @param {string} currency - currency of the product\n * @returns {Object} return HTML with the price and currency ready to be used\n */\n format(value, currency, round) {\n const currencySymbol = currencySymbols[currency] || '';\n let template = '';\n const absValue = Math.abs(value);\n const stringPrice = (Math.round(absValue * 10 ** decimals) / 10 ** decimals).toString();\n const priceParts = stringPrice.split('.');\n let intPart = priceParts[0];\n let decPart = priceParts.length > 1 ? priceParts[1] : '';\n intPart = formatPriceWithThousandsSeparator(intPart);\n\n if (round && decPart) {\n template = roundDecimals();\n } else if (currencyPosition === -1) {\n template =\n `${currencySymbol}` +\n `${intPart}`;\n } else if (currencyPosition === 1) {\n template =\n `${intPart}` +\n `${currencySymbol}`;\n } else {\n template =\n `${currencySymbol}` +\n `${intPart}` +\n `${currency}`;\n }\n return template;\n\n function roundDecimals() {\n decPart = priceParts.length > 1 ? priceParts[1] : '';\n while (decPart.length < decimals) {\n decPart += '0';\n }\n if (currencyPosition === -1) {\n return (\n `${currencySymbol}` +\n `${intPart}${getDecimalTemplate(decPart, decimalCharacter)}`\n );\n }\n if (currencyPosition === 1) {\n return (\n `${intPart}${getDecimalTemplate(decPart, decimalCharacter)}` +\n `${currencySymbol}`\n );\n }\n return (\n `${currencySymbol}` +\n `${intPart}${getDecimalTemplate(decPart, decimalCharacter)}` +\n `${currency}`\n );\n }\n },\n /**\n * Prints price formatted for product cards\n * @param {number} value - price of the product\n * @param {string} currency - currency of the product\n * @returns {Object} return HTML with the price and currency ready to be used\n */\n formatWithForcedDecimals(value, currency) {\n const currencySymbol = currencySymbols[currency] || '';\n let template = '';\n const absValue = Math.abs(value);\n const stringPrice = (Math.round(absValue * 10 ** decimals) / 10 ** decimals).toString();\n const priceParts = stringPrice.split('.');\n let intPart = priceParts[0];\n let decPart = priceParts.length > 1 ? priceParts[1] : '';\n intPart = formatPriceWithThousandsSeparator(intPart);\n\n template = roundDecimals();\n\n return template;\n\n function roundDecimals() {\n decPart = priceParts.length > 1 ? priceParts[1] : '00';\n while (decPart.length < decimals) {\n decPart += '0';\n }\n if (currencyPosition === -1) {\n return (\n `${currencySymbol}` +\n `${intPart}${getDecimalTemplate(decPart, decimalCharacter)}`\n );\n }\n if (currencyPosition === 1) {\n return (\n `${intPart}${getDecimalTemplate(decPart, decimalCharacter)}` +\n `${currencySymbol}`\n );\n }\n return (\n `${currencySymbol}` +\n `${intPart}${getDecimalTemplate(decPart, decimalCharacter)}` +\n `${currency}`\n );\n }\n }\n };\n\n function formatPriceWithThousandsSeparator(intPart) {\n const numberGroupSeparators = {\n es: '.',\n pt: '.',\n it: '.',\n de: '.',\n fr: ' ',\n br: '.',\n en: ',',\n fi: ',',\n se: ' ',\n mx: ',',\n us: ',',\n ca: '.',\n ve: '.',\n ru: ' ',\n he: ',',\n ar: ',',\n tr: ',',\n ua: ' '\n };\n\n const numberGroupSeparator = numberGroupSeparators[getLanguage()] || '.';\n const intPartWithSeparation = [];\n let str = '';\n for (let i = intPart.length - 1; i >= 0; i--) {\n str += intPart[i];\n if (str.length === 3) {\n intPartWithSeparation.push(reverseString(str));\n str = '';\n }\n }\n if (str.length > 0) {\n intPartWithSeparation.push(reverseString(str));\n }\n intPartWithSeparation.reverse();\n return intPartWithSeparation.join(numberGroupSeparator);\n }\n\n function getLanguage() {\n return context.Language || context.language;\n }\n\n function getMarket() {\n return context.Market || context.market;\n }\n};\n\nfunction getDecimalTemplate(decPart, decimalCharacter) {\n return `${decimalCharacter}${decPart}`;\n}\n\nfunction reverseString(str) {\n return str\n .split('')\n .reverse()\n .join('');\n}\n","/* ==========================================================================\n ImageRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'IMAGE::DESTROY';\nconst DISPLAY = 'IMAGE::DISPLAY';\nconst HIDE = 'IMAGE::HIDE';\n\nconst SET_SRC = 'IMAGE::SET_SRC';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\nconst setSrc = payload => ({ type: SET_SRC, payload });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n SET_SRC\n },\n actions: {\n destroy,\n display,\n hide,\n setSrc\n }\n};\n","/* ==========================================================================\n ModalRxjs > Client > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'MODAL::DESTROY';\nconst DISPLAY = 'MODAL::DISPLAY';\nconst HIDE = 'MODAL::HIDE';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE\n },\n actions: {\n destroy,\n display,\n hide\n }\n};\n","/* ==========================================================================\n ModalRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'ModalRxjs',\n init: true,\n start: true,\n css: {\n close: 'modal-rxjs__close',\n visible: 'is-visible',\n modalVisible: 'modal-is-visible'\n },\n type: {\n close: 'modal-rxjs-close'\n },\n icon: {\n cancel: 'cancel'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n Tooltip > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'TOOLTIP::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n Tooltip > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'Tooltip',\n init: true,\n start: true,\n css: {},\n type: {},\n offset: [0, 8]\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n CircuitContentCru > Templates > Tooltip \n ========================================================================== */\n\n/* Import modules */\nconst Category = require('./category');\nconst DepartureDate = require('./departure-date');\nconst Advantage = require('./advantage');\nconst JustMarried = require('./just-married');\nconst Offer = require('./offer');\nconst Fees = require('./fees');\nconst Contact = require('./contact');\n\nconst {\n TOOLTIP_CATEGORY,\n TOOLTIP_ADVANTAGE,\n TOOLTIP_HIGHLIGHT,\n TOOLTIP_JUST_MARRIED,\n TOOLTIP_OFFER,\n TOOLTIP_FEES,\n TOOLTIP_CONTACT\n} = require('../../constants/tooltip');\n\n/**\n * Tooltip template\n * @param {object} data\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Tooltip(data, literals, context) {\n /* Data */\n const { type, departure = {}, category = {}, advantage = {} } = data;\n\n if (type === TOOLTIP_CATEGORY || type === TOOLTIP_HIGHLIGHT) {\n return Category(category, literals, context);\n }\n\n if (type === TOOLTIP_ADVANTAGE) {\n return Advantage(advantage, context);\n }\n\n if (type === TOOLTIP_JUST_MARRIED) {\n return JustMarried(literals, context);\n }\n\n if (type === TOOLTIP_OFFER) {\n return Offer(data, context);\n }\n\n if (type === TOOLTIP_FEES) {\n return Fees(data, context);\n }\n\n if (type === TOOLTIP_CONTACT) {\n return Contact(data, context);\n }\n\n return DepartureDate(departure, literals, context);\n};\n","/* ==========================================================================\n CarouselRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'CAROUSEL::DESTROY';\nconst DISPLAY = 'CAROUSEL::DISPLAY';\nconst HIDE = 'CAROUSEL::HIDE';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE\n },\n actions: {\n destroy,\n display,\n hide\n }\n};\n","/* ==========================================================================\n Events > Resize\n ========================================================================== */\n\n/**\n * Resize\n * Resize window event dispatch with a IE support\n */\nfunction resizeWindow(delay = 1000) {\n setTimeout(() => {\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {\n const evt = document.createEvent('UIEvents');\n\n evt.initUIEvent('resize', true, false, window, 0);\n\n window.dispatchEvent(evt);\n } else {\n window.dispatchEvent(new Event('resize'));\n }\n }, delay);\n}\n\n/* Exports */\nmodule.exports = {\n resizeWindow\n};\n","/* ==========================================================================\n CarouselRxjs > config\n ========================================================================== */\n\n/* Config */\nconst config = {\n component: 'CarouselRxjs',\n init: true,\n start: true,\n navigation: {\n prev: 'angle-left',\n next: 'angle-right'\n },\n css: {\n slide: 'carousel-rxjs__slide',\n hidden: 'is-hidden'\n }\n};\n\n/* Exports */\nmodule.exports = () => config;\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Prices > Items\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { map, filter, tap } = require('rxjs/operators');\n\nconst { DateTime } = require('luxon');\n\nconst { addTooltip, destroyTooltip } = require('../../../../tooltip');\n\nconst { TOOLTIP_OFFER } = require('../../../../../../constants/tooltip');\n\nconst getConstatsByType = require('../../../constants');\n\nconst Mapper = require('../mapper');\n\nconst { addLoader } = require('./loader');\nconst { addMessage } = require('../../../../message');\n\nconst { sendContactData, hasAllContactData, hasErrorContactData } = require('../../../../contact');\n\nconst { generateForm } = require('../../../utils');\n\nconst cleanInputs = instance => {\n if (instance.otherAirports) {\n instance.otherAirports.actions.destroy();\n }\n if (instance.informations) {\n instance.informations.filter(item => item).forEach(item => item.customerCard.actions.setValue(''));\n }\n};\n\nconst checkContacts = (data, instance) => {\n const { requestCustomerData } = data;\n const out = [];\n\n if (requestCustomerData && (!hasAllContactData(instance) || hasErrorContactData(instance))) {\n out.push(false);\n } else out.push(true);\n\n if (instance.checkboxes && instance.checkboxes.length && !instance.store.state.validations.areCheckboxesValid) {\n const { checkboxes } = instance.config.requestCustomerData;\n instance.checkboxes.forEach(item => {\n const splitted = item.element.dataset.type.split('__');\n const checkboxName = splitted[splitted.length - 1];\n const checkboxChecked = item.element.firstElementChild.checked;\n const matched = checkboxes.find(chkb => chkb.name === checkboxName);\n\n if (matched.required && !checkboxChecked) item.actions.setError();\n else item.actions.resetStatus();\n });\n\n instance.actions.validateCheckboxes(false);\n out.push(false);\n } else out.push(true);\n\n if (out.every(item => item)) {\n instance.actions.validateCheckboxes(true);\n return true;\n }\n\n const contactFrame = document.querySelector('[data-contact]');\n window.scrollTo({\n top: contactFrame.getBoundingClientRect().top + window.scrollY - contactFrame.offsetHeight,\n behavior: 'smooth'\n });\n\n return false;\n};\n\nconst isValid = instance => {\n const { otherAirportsDropdownValue, requestCustomerData, isPlatformModeError } = instance.config;\n const { origin } = instance.store.select('data');\n\n // Checking if the airport is correct\n if (origin === otherAirportsDropdownValue) {\n instance.otherAirports.element.classList.add('not-valid');\n window.scrollTo(0, instance.otherAirports.element.offsetTop);\n return false;\n }\n\n if (!checkContacts({ requestCustomerData }, instance)) return false;\n\n if (isPlatformModeError) {\n // Show error mesage\n addMessage(instance);\n return false;\n }\n\n return true;\n};\n\nconst getFormDefault = ({ departureDate, categoryCode }, instance) => {\n /* Check first form */\n if (!isValid(instance)) return;\n\n /* Data */\n const { endpoints } = instance.config;\n const { requestForm } = endpoints;\n const { Method, Url, Arguments } = requestForm;\n\n /* Const with params name */\n const values = getValuesDefault({ departureDate, categoryCode }, instance);\n\n /* Create body params */\n const Body = Mapper(Arguments, values);\n\n /* Generate form */\n const form = generateForm({ Body, Method, Url });\n\n /* Add loader */\n addLoader(instance);\n\n if (instance.config.requestCustomerData) {\n sendContactData(instance);\n }\n\n // In case of history.back in Chrome, it is necessary to empty the input fields\n cleanInputs(instance);\n\n /* Submit form */\n form.submit();\n};\n\nconst getFormCrudyn = ({ departureDate }, instance) => {\n /* Check first form */\n if (!isValid(instance)) return;\n\n /* Data */\n const { requestForm } = instance.config.endpoints;\n const { Method, Url, Arguments } = requestForm;\n\n /* Constants with params name for crudyn */\n const { ORIGIN_CIR, ACCOMMODATIONS, DAY, RESIDENT, HMOON, CLUB_CODE, CLUB_NAME, ALTERNATIVE } = getConstatsByType(\n 'crudyn'\n );\n\n /* Values */\n const values = {\n [DAY]: DateTime.fromISO(departureDate).toFormat('yyyy-LL-dd'),\n [ORIGIN_CIR]: instance.store.select('data').origin,\n [ACCOMMODATIONS]: `[\"${instance.store.select('data').informations[0].ages}\"]`,\n [RESIDENT]: `${+instance.store.select('data').resident}`,\n [HMOON]: `${instance.store.select('data').informations[0].justMarried}`,\n [CLUB_CODE]: instance.store.select('data').informations[0].customerCard,\n [CLUB_NAME]: instance.store.select('data').informations[0].customerSurname,\n [ALTERNATIVE]: Object.values(instance.store.select('data').nights)\n .map(item => `${item.id}-${item.value}`)\n .join('_')\n };\n\n /* Body with params */\n const Body = Mapper(Arguments, values);\n\n /* Generate Form */\n const form = generateForm({ Body, Method, Url });\n\n /* Add loader */\n addLoader(instance);\n\n if (instance.config.requestCustomerData) {\n sendContactData(instance);\n }\n\n // In case of history.back in Chrome, it is necessary to empty the input fields\n cleanInputs(instance);\n\n /* Submit form */\n form.submit();\n};\n\n/* Init */\nfunction initItems(instance) {\n const panel = instance;\n\n /* Crudyn */\n const { crudyn } = instance.config;\n\n /* Hooks */\n const { prices } = instance.hooks;\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n pricesItemsClick: fromEvent(prices, 'click')\n .pipe(\n tap(event => event.stopPropagation()),\n map(event => event.target.closest('[data-item]')),\n filter(element => element !== null)\n )\n .subscribe(el => {\n if (+el.dataset.category === 0) return;\n const { item, category } = el.dataset;\n if (crudyn) {\n getFormCrudyn({ departureDate: item }, instance);\n return;\n }\n getFormDefault({ departureDate: item, categoryCode: category }, instance);\n }),\n pricesItemsMouseover: fromEvent(prices, 'mouseover')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => !instance.tooltip),\n map(\n event =>\n event.target.closest('[data-group] [data-item]') ||\n event.target.closest('[data-crudyn] [data-item]')\n ),\n filter(element => element !== null)\n )\n .subscribe(el => {\n /* Data */\n const { item, category } = el.dataset;\n const { departures } = instance.store.select('data').categoriesPrices;\n\n let offerDescriptionText = '';\n\n if (crudyn) {\n const { offerDescription = '' } = departures\n .filter(departure => departure.id === item)\n .reduce((acc, cur) => ({ ...acc, ...cur }), {});\n\n offerDescriptionText = offerDescription;\n }\n\n if (!crudyn) {\n const { offerDescription } = departures\n .filter(departure => departure.id === item)[0]\n .prices.filter(price => price.category === +category)[0];\n\n offerDescriptionText = offerDescription;\n }\n\n if (!offerDescriptionText) return;\n\n /* Add Tooltip */\n addTooltip(instance, { type: TOOLTIP_OFFER, offerDescription: offerDescriptionText }, el);\n }),\n pricesItemsMouseout: fromEvent(prices, 'mouseout')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => instance.tooltip),\n map(\n event =>\n event.target.closest('[data-group] [data-item]') ||\n event.target.closest('[data-crudyn] [data-item]')\n ),\n filter(element => element !== null)\n )\n .subscribe(() => {\n /* Destroy Tooltip */\n destroyTooltip(instance, { type: TOOLTIP_OFFER });\n })\n };\n}\n\n/* Destroy */\nfunction destroyItems(instance) {\n const panel = instance;\n\n /* Subscriptions */\n instance.subscriptions.pricesItemsClick.unsubscribe();\n delete panel.subscriptions.pricesItemsClick;\n}\n\nfunction getValuesDefault({ departureDate, categoryCode }, instance) {\n const {\n BK_DEP,\n BK_HONEY,\n MC_HONEY,\n BK_HC,\n MC_HC,\n BK_CLUBNAME,\n MC_CLUBNAME,\n BK_CLUBSURNAME,\n MC_CLUBSURNAME,\n BK_PAXES,\n ACCOMMODATIONS,\n BK_CAT,\n BK_ORIGCODE,\n COUPON_CODE,\n MC_COUPON_CODE\n } = getConstatsByType();\n\n const data = instance.store.select('data');\n\n const informations = data.informations.filter(item => item && Object.keys(item).length !== 0);\n\n /* Values */\n const values = {\n [BK_DEP]: DateTime.fromISO(departureDate).toFormat('dd/LL/yyyy'),\n [BK_CAT]: categoryCode,\n [BK_ORIGCODE]: data.origin,\n [BK_PAXES]: informations[0].ages,\n [BK_HONEY]: informations[0].justMarried,\n [BK_HC]: informations[0].healthCare,\n [BK_CLUBNAME]: informations[0].customerCard,\n [BK_CLUBSURNAME]: informations[0].customerSurname,\n [COUPON_CODE]: informations[0].discountCode,\n [ACCOMMODATIONS]: informations.map(rooms => rooms.ages).join('_'),\n [MC_HONEY]: informations.map(room => room.justMarried).join('_'),\n [MC_HC]: informations.map(room => room.healthCare).join('_')\n };\n\n if (informations.filter(room => room.customerSurname).length) {\n values[MC_CLUBSURNAME] = informations.map(room => room.customerSurname || '').join('_');\n }\n\n if (informations.filter(room => room.customerCard).length) {\n values[MC_CLUBNAME] = informations.map(room => room.customerCard || '').join('_');\n }\n\n if (informations.filter(room => room.discountCode).length) {\n values[MC_COUPON_CODE] = informations.map(room => room.discountCode || '').join('_');\n }\n\n return values;\n}\n\n/* Exports */\nmodule.exports = {\n initItems,\n destroyItems,\n getFormDefault,\n getFormCrudyn\n};\n","/* ==========================================================================\n LoaderBanner > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'LoaderBanner',\n init: true,\n start: true,\n loop: {\n delay: 3000,\n repeat: 999\n },\n css: {},\n type: {},\n imgConfig: {\n operation: 'resize',\n suboperation: 'crop',\n quality: 90,\n width: 678,\n height: 185\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n LoaderBanner > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'LOADERBANNER::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Contact\n ========================================================================== */\n\nconst { fromEvent } = require('rxjs');\n\nconst { addTooltipClicked, destroyTooltipClicked } = require('../tooltip-clicked');\nconst { TOOLTIP_CONTACT } = require('../../../constants/tooltip');\n\nconst { initName, destroyName, hasErrorName } = require('./name');\nconst { initSurname, destroySurname, hasErrorSurname } = require('./surname');\nconst { initPhone, destroyPhone, hasErrorPhone } = require('./phone');\nconst { initEmail, destroyEmail, hasErrorEmail } = require('./email');\nconst { initCheckboxes, destroyCheckboxes } = require('./checkboxes');\n\nconst Services = require('../services');\nconst { mapArguments } = require('./mapper');\n\nfunction sendContactData(instance) {\n /* Service */\n const { sendContactDataService } = Services();\n\n /* Get endpoints */\n const { registerCustomer } = instance.config.endpoints;\n\n /* Get name component and arguments */\n const { Arguments, Method, Url } = registerCustomer;\n\n const { contactData, checks } = instance.store.state.validations;\n const args = mapArguments({ args: Arguments, contactData, checks });\n\n /* Get new data */\n sendContactDataService({\n Method,\n Arguments: args,\n Url\n }).subscribe({\n next: results => {\n console.log(results);\n }\n });\n}\n\n/* Has all data */\nfunction hasAllContactData(instance) {\n const { requestCustomerData } = instance.config;\n\n const fields = requestCustomerData.mandatory.map(item => {\n return {\n name: item,\n value: instance.store.select('validations').contactData[item]\n };\n });\n\n /* Data */\n fields.forEach(item => {\n if (instance.contactInputEmail && item.name === 'email' && item.value === '') {\n instance.contactInputEmail.actions.setError();\n }\n if (instance.contactInputName && item.name === 'name' && item.value === '') {\n instance.contactInputName.actions.setError();\n }\n if (instance.contactInputSurname && item.name === 'surname' && item.value === '') {\n instance.contactInputSurname.actions.setError();\n }\n if (instance.contactInputPhone && item.name === 'phone' && item.value === '') {\n instance.contactInputPhone.actions.setError();\n }\n });\n\n return fields.filter(item => item.value === '').length === 0;\n}\n\n/* Has error */\nfunction hasErrorContactData(instance) {\n const errors = [\n hasErrorEmail(instance),\n hasErrorName(instance),\n hasErrorPhone(instance),\n hasErrorSurname(instance)\n ].filter(error => error === true);\n\n return errors.length > 0;\n}\n\n/* Modules */\nconst { actions, types } = require('../store/actions');\n\n/* Init */\nfunction initContact(instance) {\n const inst = instance;\n if (!instance.config.requestCustomerData) return;\n\n /* Hooks */\n inst.hooks = {\n ...instance.hooks,\n contactLink: instance.element.querySelector('[data-contact-link]')\n };\n\n /* Actions */\n inst.actions = {\n ...instance.actions,\n toggleContactTooltip: payload => {\n return instance.store.dispatch(actions.toggleTooltipClick(payload));\n },\n setContact: data => {\n const hasError = hasErrorContactData(instance);\n\n return instance.store.dispatch(\n actions.setContact({\n ...data,\n hasError\n })\n );\n }\n };\n\n /* Name */\n initName(instance);\n\n /* Surname */\n initSurname(instance);\n\n /* Phone */\n initPhone(instance);\n\n /* Email */\n initEmail(instance);\n\n /* Checkboxes */\n initCheckboxes(instance);\n\n /* Reactions */\n inst.reactions = {\n ...instance.reactions,\n toggleContactTooltip: instance.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_TOOLTIP_CLICKED) return;\n\n if (!action.payload) {\n destroyTooltipClicked(instance, { type: TOOLTIP_CONTACT }, instance.hooks.contactLink);\n } else {\n const content = `
\n ${instance.config.literals.dataProtection}\n
`;\n\n // Initializing a new tooltip\n addTooltipClicked(instance, { type: TOOLTIP_CONTACT, content }, instance.hooks.contactLink);\n }\n })\n };\n\n /* Subscriptions */\n inst.subscriptions = {\n ...instance.subscriptions,\n toggleContactTooltip: instance.hooks.contactLink\n ? fromEvent(instance.hooks.contactLink, 'click').subscribe(() => {\n instance.actions.toggleContactTooltip(!instance.store.state.tooltip.tooltipClicked);\n })\n : false\n };\n}\n\n/* Destroy */\nfunction destroyContact(instance) {\n const inst = instance;\n\n if (instance.subscriptions.toggleContactTooltip) {\n instance.subscriptions.toggleContactTooltip.unsubscribe();\n delete inst.subscriptions.toggleContactTooltip;\n }\n\n instance.reactions.toggleContactTooltip.unsubscribe();\n delete inst.reactions.toggleContactTooltip;\n\n delete inst.actions.toggleContactTooltip;\n delete inst.actions.setContact;\n\n delete inst.hooks.contactLink;\n\n /* Destroy Checkboxes */\n destroyCheckboxes(instance);\n\n /* Name */\n destroyName(instance);\n\n /* Surname */\n destroySurname(instance);\n\n /* Phone */\n destroyPhone(instance);\n\n /* Email */\n destroyEmail(instance);\n}\n\n/* Exports */\nmodule.exports = {\n initContact,\n destroyContact,\n sendContactData,\n hasErrorContactData,\n hasAllContactData\n};\n","/* ==========================================================================\n CheckboxRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * CheckboxRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CheckboxRxjs(selector = '[data-component=CheckboxRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n input: instance.element.querySelector('input'),\n label: instance.element.querySelector('label')\n };\n\n /* ID for pairing */\n instance.id = randomId(randomId('checkbox'));\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n CarouselRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst configuration = require('./client/js/config');\n\n/* Render navigation */\nconst renderNavigation = (navigation, context) => {\n /* View helpers */\n const { icon } = ViewHelpers(context);\n\n return html(`\n \n \n `);\n};\n\n/* Render pagination */\nconst renderPagination = () =>\n html(`\n \n `);\n\n/* Exports */\nmodule.exports = function Template(data = {}, context) {\n /* Config */\n const {\n config = {},\n items = [],\n hasPagination = false,\n hasNavigation = true,\n hasAutoplay = false,\n hasBreakpoints = false\n } = data;\n const { dataType } = prepareDataConfig(config.data);\n\n const styles = config.styles || [];\n\n /* Navigation */\n const navigation = {\n ...configuration().navigation,\n ...config.navigation\n };\n\n /* Template */\n return html(`\n
\n\n \n\n
\n `);\n};\n","/* ==========================================================================\n Services > Models\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { fromFetch } = require('rxjs/fetch');\nconst { catchError, switchMap } = require('rxjs/operators');\n\n/* Global variables for AbortController */\nlet modelController;\nlet modelSignal;\n\n/* Exports */\n/**\n * Services\n * @param {object} context,\n * @returns {object} methods api\n */\nmodule.exports = function Services(context) {\n /* Context */\n const {\n modelAjaxEndpoint: url = 'https://www.logitravel.com/cruisesshowcase/ajax/component/GetModelComponent',\n businessAreaName: BusinessAreaName = 'Cruises'\n } = context;\n\n return {\n /**\n * Get model\n * @param {object} data,\n * @returns {object} model\n */\n getModel(data = {}) {\n /* Data */\n const { Name, Arguments } = data;\n\n /* Cancel the previous request */\n if (modelController !== undefined) {\n modelController.abort();\n }\n\n /* Feature detect */\n if ('AbortController' in window) {\n modelController = new AbortController();\n modelSignal = modelController.signal;\n }\n\n return fromFetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n Name,\n BusinessAreaName,\n Arguments\n }),\n signal: modelSignal\n }).pipe(\n switchMap((response = {}) => {\n if (response.ok) {\n return response.json();\n }\n return of({ error: true, message: `Error fetching model ${response.statusText}` });\n }),\n catchError(err => {\n return of({ error: true, message: err.message });\n })\n );\n },\n get(data = {}) {\n /* Data */\n const { url: endpoint, Arguments } = data;\n\n return fromFetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n Arguments\n })\n }).pipe(\n /* */\n switchMap((response = {}) => {\n if (response.ok) {\n return response.json();\n }\n return of({ error: true, message: `Error fetching model ${response.statusText}` });\n }),\n catchError(err => {\n return of({ error: true, message: err.message });\n })\n );\n }\n };\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Flights Included > Resident\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Checkbox = require('@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js');\nconst CheckboxAct = require('@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js/store/actions');\n\nconst Resident = require('../../../../../templates/passengers/flights-included/resident');\n\nconst { actions } = require('../../../store/actions');\n\nconst configuration = require('../../../config');\n\n/* Add resident */\nfunction addResident(instance) {\n if (instance.resident) return;\n\n /* Data */\n const { literals, context } = instance.config;\n\n /* templae */\n const template = Resident(true, literals, context);\n\n /* node */\n const node = toNode(template)[0];\n\n /* Append node */\n instance.element.querySelector('[data-origin]').appendChild(node);\n\n /* Init */\n initResident(instance);\n}\n\n/* Init */\nfunction initResident(instance) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n /* Reference */\n panel.resident = Checkbox(\n `${selector} [data-component='CheckboxRxjs'][data-type='${configuration().type.resident}']`\n );\n\n if (!panel.resident) return;\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n setResident: payload => {\n return instance.store.dispatch(actions.setResident(payload));\n }\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n changeResident: instance.resident.store.subscribe((state, action) => {\n if (action.type !== CheckboxAct.types.TOGGLE) return;\n\n const { checked } = state.checkbox;\n\n /* Dispatch */\n instance.actions.setResident(checked);\n })\n };\n\n /* Sync */\n const { checked } = instance.resident.store.select('checkbox');\n\n /* Dispatch */\n instance.actions.setResident(checked);\n}\n\n/* Destroy */\nfunction destroyResident(instance) {\n const panel = instance;\n\n if (!panel.resident) return;\n\n /* Reactions */\n instance.reactions.changeResident.unsubscribe();\n delete panel.reactions.changeResident;\n\n /* Actions */\n delete panel.actions.setResident;\n\n /* Reference */\n instance.resident.actions.destroy();\n delete panel.resident;\n}\n\n/* Exports */\nmodule.exports = {\n initResident,\n addResident,\n destroyResident\n};\n","/* ==========================================================================\n CounterRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * CounterRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CounterRxjs(selector = '[data-component=CounterRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n value: instance.element.querySelector('[data-value]')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Informations > Information > Ages > Age\n ========================================================================== */\n\n/* Import modules */\nconst { range } = require('@bluekiri/alexandria/helpers/array');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/template');\nconst SelectCfg = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/config');\n\nconst configuration = require('../../../../../../client/js/config');\n\n/**\n * CircuitContentCru template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Age(data, literals, context) {\n /* Data */\n const { index, jndex, min = 1, max = 100, values = false } = data;\n\n /* Default age */\n let { value = 35 } = data;\n\n /* Check if there are preset values for ages */\n if (values && values[jndex]) value = +values[jndex];\n\n /* Literals */\n const { ageLabel } = literals;\n\n /* Template */\n return Select(\n addStyle(\n addData(\n {\n config: {\n literals\n },\n label: ageLabel,\n items: range(min, max).map(item => ({\n label: item,\n value: +item,\n selected: +item === value\n }))\n },\n {\n type: `${configuration().type.age}-${index}-${jndex}`\n }\n ),\n [SelectCfg().css.withBorder, configuration().css.isAge]\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Informations > Information > RemoveRoom\n ========================================================================== */\n\n/* Import modules */\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/template');\n\nconst configuration = require('../../../../../client/js/config');\n\n/**\n * CircuitContentCru template\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function RemoveRoom(context) {\n /* Template */\n return Button(\n addStyle(\n addData(\n {\n icon: 'cancel'\n },\n {\n type: configuration().type.removeRoom\n }\n ),\n [configuration().css.isRemoveRoom]\n ),\n context\n );\n};\n","/* ==========================================================================\n MainRequestCru > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'MainRequestCru',\n init: true,\n start: true,\n css: {\n importantInfoBtn: 'important-info__button'\n },\n type: {\n importantInfoBtn: 'important-info'\n },\n description: {\n length: 350\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n Animations > Collapse\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\n/**\n * Collapse\n * Passed a DOM element, it collapses\n * It needs some styling done in its css/scss\n * height: auto,\n overflow: hidden,\n transition: height 0.3s ease-out\n * @param {HTMLElement} Element\n */\nfunction collapse(element) {\n const elem = element;\n\n // get the height of the element's inner content, regardless of its actual size\n const sectionHeight = element.scrollHeight;\n\n // temporarily disable all css transitions\n const elementTransition = element.style.transition;\n elem.style.transition = '';\n\n // on the next frame (as soon as the previous style change has taken effect),\n // explicitly set the element's height to its current pixel height, so we\n // aren't transitioning out of 'auto'\n requestAnimationFrame(() => {\n elem.style.height = `${sectionHeight}px`;\n elem.style.transition = elementTransition;\n\n // on the next frame (as soon as the previous style change has taken effect),\n // have the element transition to height: 0\n requestAnimationFrame(() => {\n elem.style.height = `${0}px`;\n });\n });\n\n // mark the section as \"currently collapsed\"\n element.setAttribute('data-collapsed', 'true');\n}\n\n/**\n * Expand\n * Passed a DOM element, it expands\n * @param {HTMLElement} Element\n */\nfunction expand(element) {\n const elem = element;\n\n // get the height of the element's inner content, regardless of its actual size\n const sectionHeight = element.scrollHeight;\n\n // have the element transition to the height of its inner content\n elem.style.height = `${sectionHeight}px`;\n\n // when the next css transition finishes (which should be the one we just triggered)\n fromEvent(element, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n // remove \"height\" from the element's inline styles, so it can return to its initial value\n elem.style.height = null;\n });\n\n // mark the section as \"currently not collapsed\"\n element.setAttribute('data-collapsed', 'false');\n}\n\n/* Exports */\nmodule.exports = {\n collapse,\n expand\n};\n","/* ==========================================================================\n HeaderByl > Client > Services\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { ajax } = require('rxjs/ajax');\nconst { catchError, map } = require('rxjs/operators');\n\n/**\n * Change language\n * @param {string} language code\n * @param {object} data\n * @returns {JSON} data\n */\nfunction changeLanguage(code, data) {\n /* Data */\n const {\n session = false,\n endpoint = '/CommonComponents/MultiContext/SetLanguage',\n parameterName = 'language'\n } = data;\n\n return ajax({\n url: endpoint,\n credentials: 'same-origin',\n cache: 'no-store',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=utf-8'\n },\n body: session\n ? {\n [parameterName]: code,\n session\n }\n : {\n [parameterName]: code,\n Source: 900\n }\n }).pipe(\n map(() => {\n return of({ done: true });\n }),\n catchError(err => {\n return of({ error: true, name: err.name, message: err.message });\n })\n );\n}\n\n/**\n * Change origin\n * @param {string} origin code\n * @param {object} data\n * @returns {JSON} data\n */\nfunction changeOrigin(code, instance = {}) {\n /* Data */\n const originData = instance.config.originAjax;\n const contextData = instance.config.context;\n\n const url = contextData.baseUrl;\n\n const {\n session = contextData.session,\n endpoint = originData.endpoint,\n parameterName = originData.parameterName\n } = instance.config;\n\n return ajax({\n url: url.concat(endpoint),\n credentials: 'same-origin',\n cache: 'no-store',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json; charset=utf-8'\n },\n body: session\n ? {\n [parameterName]: code,\n session\n }\n : {\n [parameterName]: code,\n Source: 900\n }\n }).pipe(\n map(() => {\n return of({ done: true });\n }),\n catchError(err => {\n return of({ error: true, name: err.name, message: err.message });\n })\n );\n}\n\nmodule.exports = {\n changeLanguage,\n changeOrigin\n};\n","/* ==========================================================================\n AgentCarousel > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst CarouselClient = require('../../../carousel/client/js');\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * AgentCarousel component\n * @param {selector} String selector for the component in the client side.\n */\n\nmodule.exports = function AgentCarouselClient(selector = '[data-component=\"AgentCarousel\"]', configuration = {}) {\n if (elementExist(selector)) {\n // Instance reference\n const instance = { ...prototype };\n\n instance.config = { ...config(), ...configuration };\n\n // Element reference\n instance.element = document.querySelector(selector);\n\n instance.literals = JSON.parse(instance.element.dataset.literals);\n instance.element.dataset.literals = false;\n\n instance.settings = JSON.parse(instance.element.dataset.settings);\n instance.element.dataset.settings = false;\n\n instance.info = instance.element.querySelector(`[data-type=\"${instance.config.type.info}\"]`);\n instance.busy = instance.element.querySelector(`[data-type=\"${instance.config.type.busy}\"]`);\n instance.schedule = instance.element.querySelector(`[data-type=\"${instance.config.type.schedule}\"]`);\n instance.description = instance.element.querySelector(`[data-type=\"${instance.config.type.description}\"]`);\n\n // CAROUSEL\n instance.carousel = CarouselClient(`${selector} [data-component=\"Carousel\"]`, instance.config.carousel);\n\n if (instance.config.init) instance.init(selector);\n\n return instance;\n }\n};\n","/* ==========================================================================\n Carousel\n ========================================================================== */\n\n/* Modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst carouselPrototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * Client/browser JS\n * @param {string} selector String selector\n * @param {object} config Configuration object to create the carousel instance\n */\nmodule.exports = function CarouselClient(selector = '[data-component=\"Carousel\"]', configuration = {}) {\n if (elementExist(selector)) {\n /* Create the instance based on prototype */\n const instance = Object.create(carouselPrototype);\n\n /* Element reference */\n instance.element = document.querySelector(selector);\n\n /* Id reference */\n instance.id = instance.element.dataset.id || randomId('carousel');\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n swiper: { ...config().swiper, ...configuration.swiper, lazy: false }\n };\n\n /* Set pagination based on data model */\n if (Object.keys(instance.element.dataset).filter(item => item === 'pagination').length > 0) {\n instance.config.hasPagination = true;\n } else {\n instance.config.hasPagination = false;\n }\n\n /* Set navigation based on data model */\n if (Object.keys(instance.element.dataset).filter(item => item === 'navigation').length > 0) {\n instance.config.hasNavigation = true;\n } else {\n instance.config.hasNavigation = false;\n }\n\n /* Auto init */\n if (instance.config.init) instance.init();\n\n return instance;\n }\n};\n","const { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst prototype = require('./prototype');\nconst baseConfig = require('./config');\n\n/**\n * Input component\n * @param {string} selector selector for the component in the client side.\n * @returns {object} Instance containing the input\n */\nmodule.exports = function InputClient(selector = '[data-component=\"Input\"]', configuration = {}) {\n if (elementExist(selector)) {\n // Build instance based on custom input object so we inherit the proto methods\n const instance = Object.create(prototype);\n\n // Config\n instance.config = { ...baseConfig, ...configuration };\n\n // Element reference\n instance.element = document.querySelector(selector);\n\n // Id reference\n instance.id = randomId(randomId('input'));\n\n // Init error handler\n instance.error = false;\n\n // Value reference\n instance.value = instance.get();\n\n // Auto init\n if (instance.config.init) instance.init();\n\n return instance;\n }\n};\n","/* ==========================================================================\n Input > Object\n ========================================================================== */\n\nconst input = {\n /* Enable */\n enable: function Fn() {\n this.element.classList.remove(this.config.css.disabled);\n this.getInput().disabled = false;\n\n return this;\n },\n\n /* Disable */\n disable: function Fn() {\n this.element.classList.add(this.config.css.disabled);\n this.getInput().disabled = true;\n\n return this;\n },\n\n /* Display */\n show: function Fn() {\n this.element.classList.remove(this.config.css.hidden);\n\n return this;\n },\n\n /* Hide */\n hide: function Fn() {\n this.element.classList.add(this.config.css.hidden);\n\n return this;\n },\n\n /* Is selectable -> input is of write type */\n isSelectable: function Fn() {\n return this.getInput().type === 'text';\n },\n\n /* Is active */\n isActive: function Fn() {\n return this.config.isActive;\n },\n\n /* Set active */\n setActive: function Fn() {\n /* Styling */\n this.element.classList.add(this.config.css.active);\n\n /* Set status */\n this.config.isActive = true;\n\n return this;\n },\n\n /* Remove active */\n removeActive: function Fn() {\n /* Styling */\n this.element.classList.remove(this.config.css.active);\n\n /* Set status */\n this.config.isActive = false;\n\n return this;\n },\n\n /* Has error */\n hasError: function Fn() {\n return this.error;\n },\n\n /* Set valid */\n setValid: function Fn() {\n this.element.classList.remove(this.config.css.error);\n this.element.classList.add(this.config.css.valid);\n\n /* Set validation to state */\n this.error = false;\n\n return this;\n },\n\n /* Set error */\n setError: function Fn() {\n this.element.classList.remove(this.config.css.valid);\n this.element.classList.add(this.config.css.error);\n\n /* Set error to state */\n this.error = true;\n\n return this;\n },\n\n /* Reset status */\n resetStatus: function Fn() {\n this.element.classList.remove(this.config.css.valid);\n this.element.classList.remove(this.config.css.error);\n\n /* Reset validation to state */\n this.error = false;\n\n return this;\n },\n\n /* Pairing label */\n setPairing: function Fn() {\n if (this.element.querySelector('label')) {\n this.getInput().setAttribute('id', this.id);\n this.getLabel().setAttribute('for', this.id);\n }\n\n return this;\n },\n\n /* Get input */\n getInput: function Fn() {\n return this.element.querySelector('input');\n },\n\n /* Get label */\n getLabel: function Fn() {\n return this.element.querySelector('label');\n },\n\n /* Get value */\n get: function Fn() {\n return this.getInput().value;\n },\n\n /* Set value */\n set: function Fn(value, trigger = true) {\n this.value = value;\n this.getInput().setAttribute('value', value);\n this.getInput().value = value;\n\n if (trigger) this.onChange(this);\n\n return this;\n },\n\n /* On change */\n onChange: function Fn(event = false) {\n /* Get track of the new value in the instance based on the input one */\n if (this.value !== this.getInput().value) this.set(this.getInput().value, false);\n\n /* Fire external callbacks */\n if (this.config.onChange.length > 0) this.config.onChange.forEach(item => item.call(this, this, event));\n\n return this;\n },\n\n /* On Focus In */\n onFocusIn: function Fn() {\n /* Not make useless changes */\n if (this.get().length > 0 && this.isActive()) return this;\n\n this.setActive();\n },\n\n /* On Focus Out */\n onFocusOut: function Fn() {\n /* Not make useless changes */\n if (this.get().length > 0 && this.isActive()) return this;\n\n this.removeActive();\n },\n\n /* On Click */\n onClick: function Fn() {\n /* Use this method instead of select(), to allow safari work */\n if (this.isSelectable() && this.config.autoSelect) this.getInput().setSelectionRange(0, this.get().length);\n },\n\n /* Add event listener */\n addEventListener: function Fn() {\n /* Bind events */\n this.bindEvents();\n\n /* On click */\n this.getInput().addEventListener('click', this.onClick);\n\n /* On change */\n this.getInput().addEventListener('change', this.onChange);\n\n /* On focus in */\n this.getInput().addEventListener('focusin', this.onFocusIn);\n\n /* On focus out */\n this.getInput().addEventListener('focusout', this.onFocusOut);\n\n return this;\n },\n\n /* Remove event listener */\n removeEventListener: function Fn() {\n /* On click */\n this.getInput().removeEventListener('click', this.onClick);\n\n /* On change */\n this.getInput().removeEventListener('change', this.onChange);\n\n /* On focus in */\n this.getInput().removeEventListener('focusin', this.onFocusIn);\n\n /* On focus out */\n this.getInput().removeEventListener('focusout', this.onFocusOut);\n\n return this;\n },\n\n /* Bind events */\n bindEvents: function Fn() {\n this.onFocusIn = this.onFocusIn.bind(this);\n this.onFocusOut = this.onFocusOut.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onClick = this.onClick.bind(this);\n\n return this;\n },\n\n /* Init */\n init: function Fn() {\n /* Connect the label in case it has it with its input */\n this.setPairing();\n\n /* Adding listener */\n if (this.config.domEvents) this.addEventListener();\n\n /* In case we have init value, set active status */\n if (this.get().length > 1) this.setActive();\n }\n};\n\nmodule.exports = input;\n","/* ==========================================================================\n Input > Config\n ========================================================================== */\n\nconst config = {\n component: 'Input',\n init: true,\n domEvents: true,\n autoSelect: true,\n css: {\n valid: 'is-valid',\n error: 'has-error',\n active: 'is-active',\n hidden: 'is-hidden',\n disabled: 'is-disabled'\n },\n isActive: false,\n onChange: []\n};\n\nmodule.exports = config;\n","/* ==========================================================================\n Modal > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst config = require('./config');\nconst prototype = require('./prototype');\n\n/* Utilities functions */\nconst modalInStore = instance => instance.getStore().filter(item => item.type === instance.type);\nconst modalIsUnique = instance => modalInStore(instance).length > 0;\nconst getTriggers = instance => instance.config.triggers;\n\n/**\n * Modal component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ModalClient(selector = '[data-component=\"Modal\"]', configuration = {}) {\n if (elementExist(selector)) {\n /* Build instance */\n const instance = Object.create(prototype);\n\n /* Config */\n instance.config = { ...config(), ...configuration };\n\n /* Element reference */\n instance.element = document.querySelector(selector);\n\n /* Id reference */\n instance.id = instance.element.dataset.id || randomId('modal');\n\n /* Type reference control */\n instance.type = configuration.type;\n\n if (modalIsUnique(instance)) return checkUniqueModal(instance);\n\n /* Auto init */\n if (instance.config.init) instance.init();\n\n return instance;\n }\n};\n\nfunction checkUniqueModal(instance) {\n /* Get referene to the trigger for this modal to apply to the store one */\n const triggers = getTriggers(instance);\n\n /* Remove from dom newly created modal to replace it */\n instance.removeFromDom();\n\n /* Replace instance with the current in store */\n const newInstance = modalInStore(instance)[0];\n\n newInstance.config.triggers.push(...triggers);\n\n /* Init new triggrs */\n newInstance.addTriggers(triggers);\n\n return newInstance;\n}\n","/* ==========================================================================\n Image > Client\n ========================================================================== */\n\n/* Modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * Image component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function Image(selector = '[data-component=\"Image\"]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element reference */\n instance.element = document.querySelector(selector);\n\n /* Config reference */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n const result = instance.element.dataset.config ? JSON.parse(instance.element.dataset.config) : {};\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Auto init */\n if (instance.config.init) instance.init();\n\n /* Return instance to other components */\n return instance;\n }\n};\n","// Carousel config object\nconst config = {\n init: true,\n c2cMode: false,\n queue: '',\n queueCall: '',\n lineOfBusiness: 4,\n interval: 20000,\n carousel: {\n init: true,\n isMulti: true,\n swiper: {\n init: true,\n // Default parameters\n slidesPerView: 5,\n slidesPerGroup: 1,\n spaceBetween: 4,\n\n // Responsive breakpoints\n breakpoints: {\n // when window width is <= 480px\n 480: {\n slidesPerView: 2,\n slidesPerGroup: 2\n },\n // when window width is <= 720px\n 991: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n // when window width is <= 1200px\n 1200: {\n slidesPerView: 4,\n slidesPerGroup: 4\n }\n },\n pagination: {}\n }\n },\n modal: {\n autoDom: false,\n type: 'modal-form'\n },\n agentReplace: {\n src: '[agent-image-src]',\n alt: '[agent-image-alt]',\n title: '[agent-image-title]',\n name: '[AGENT-NAME]',\n description: '[agent-description]',\n agentId: '[agent-id]',\n sessionCode: '[session-code]'\n },\n type: {\n name: 'name',\n phone: 'phone',\n containerForm: 'container-form',\n agentCardNode: 'agent-card-node',\n agentFormNode: 'agent-form-node',\n agentForm: 'agent-form',\n agentId: 'agent-id',\n cardCarousel: 'card-carousel',\n submitButton: 'form-submit',\n info: 'info',\n busy: 'busy',\n schedule: 'schedule',\n legalText: 'legal-text',\n description: 'description'\n },\n css: {\n visible: 'is-visible',\n active: 'is-active',\n hidden: 'is-hidden'\n },\n bgImg: '//cdn.logitravel.com/comun/images/lineas/miscelanea_1920x1080.jpg',\n bgImgConfig: {\n resize: {\n operation: 'resize',\n suboperation: 'crop',\n width: 329,\n height: 484,\n quality: 97\n }\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n BreadcrumbsIdCru > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'BREADCRUMBSIDCRU::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n TabsRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'TABS::DESTROY';\n\nconst CHANGE_TAB = 'TABS::CHANGE_TAB';\nconst SET_TAB = 'TABS::SET_TAB';\n\nconst DISABLE = 'TABS::DISABLE';\nconst ENABLE = 'TABS::ENABLE';\n\nconst DISABLE_TAB = 'TABS::DISABLE_TAB';\nconst ENABLE_TAB = 'TABS::ENABLE_TAB';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\nconst disable = () => ({ type: DISABLE });\nconst enable = () => ({ type: ENABLE });\n\nconst changeTab = payload => ({ type: CHANGE_TAB, payload });\nconst setTab = payload => ({ type: SET_TAB, payload });\n\nconst disableTab = payload => ({ type: DISABLE_TAB, payload });\nconst enableTab = payload => ({ type: ENABLE_TAB, payload });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n CHANGE_TAB,\n SET_TAB,\n ENABLE_TAB,\n DISABLE_TAB,\n DISABLE,\n ENABLE\n },\n actions: {\n destroy,\n changeTab,\n setTab,\n enableTab,\n disableTab,\n disable,\n enable\n }\n};\n","/* ==========================================================================\n TabsRoute > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'TABSROUTE::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n ItineraryDyn > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'ITINERARYDYN::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n ItineraryDyn > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'ItineraryDyn',\n init: true,\n start: true,\n css: {\n map: 'itinerary-dyn__map'\n },\n type: {\n map: 'itinerary-dyn-map',\n collapse: 'itinerary-dyn-collapse',\n image: 'itinerary-dyn-image'\n },\n mapConfig: {\n width: 305,\n height: 214\n },\n imgConfig: {\n width: 220,\n height: 175\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n CardInformationCarousel > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'CARDINFORMATIONCAROUSEL::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n CardInformation > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'CARDINFORMATION::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n CardInformation > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CardInformation',\n init: true,\n start: true,\n css: {\n modal: 'card-information__modal'\n },\n type: {\n modal: 'card-information-modal'\n },\n imgConfig: {\n width: 360,\n height: 215\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n CardInformationCarousel > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CardInformationCarousel',\n init: true,\n start: true,\n css: {},\n type: {\n card: 'card-information-carousel-card'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ShipSection > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'SHIP-SECTION::DESTROY';\nconst CHANGE_IMAGE_MEDIA = 'SHIP-SECTION::CHANGE_IMAGE_MEDIA';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst changeImageMedia = payload => ({ type: CHANGE_IMAGE_MEDIA, payload });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n CHANGE_IMAGE_MEDIA\n },\n actions: {\n destroy,\n changeImageMedia\n }\n};\n","/* ==========================================================================\n VideoRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'VideoRxjs',\n start: true,\n init: true,\n css: {\n hidden: 'is-hidden'\n },\n size: {\n height: 432,\n width: 768\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n VideoRxjs > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'VIDEO::DESTROY';\nconst DISPLAY = 'VIDEO::DISPLAY';\nconst HIDE = 'VIDEO::HIDE';\nconst SET_VIDEO = 'VIDEO::SET_VIDEO';\nconst CREATE_PLAYER = 'VIDEO::CREATE_PLAYER';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\nconst setVideo = payload => ({ type: SET_VIDEO, payload });\nconst createPlayer = () => ({ type: CREATE_PLAYER });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n SET_VIDEO,\n CREATE_PLAYER\n },\n actions: {\n destroy,\n display,\n hide,\n setVideo,\n createPlayer\n }\n};\n","/* ==========================================================================\n PackageItem > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'PACKAGE_ITEM::DESTROY';\nconst DISPLAY = 'PACKAGE_ITEM::DISPLAY';\nconst HIDE = 'PACKAGE_ITEM::HIDE';\n\nconst CLOSE_ORIGINS = 'PACKAGE_ITEM::CLOSE_ORIGINS';\nconst OPEN_ORIGINS = 'PACKAGE_ITEM::OPEN_ORIGINS';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\nconst display = () => ({ type: DISPLAY });\nconst hide = () => ({ type: HIDE });\n\nconst closeOrigins = () => ({ type: CLOSE_ORIGINS });\nconst openOrigins = () => ({ type: OPEN_ORIGINS });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY,\n DISPLAY,\n HIDE,\n CLOSE_ORIGINS,\n OPEN_ORIGINS\n },\n actions: {\n destroy,\n display,\n hide,\n closeOrigins,\n openOrigins\n }\n};\n","/* ==========================================================================\n BannersMask > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'BANNERSMASK::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n ToastAsync > Client > Store > Actions\n ========================================================================== */\n\n/* Types */\nconst DESTROY = 'TOASTASYNC::DESTROY';\n\n/* Actions */\nconst destroy = () => ({ type: DESTROY });\n\n/* Exports */\nmodule.exports = {\n types: {\n DESTROY\n },\n actions: {\n destroy\n }\n};\n","/* ==========================================================================\n MainRequestCru > Client\n ========================================================================== */\n\n/* Import modules */\nrequire('intersection-observer');\n\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { resolveComponents, getClickToCall, getToastAsync } = require('./components');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * MainRequestCru component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function MainRequestCru(selector = '[data-component=MainRequestCru]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Selector */\n instance.selector = selector;\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /**\n * Setting public path to the webpack exposed variable\n */\n /* eslint-disable */\n if (config.publicPath) __webpack_public_path__ = config.publicPath;\n /* eslint-enable */\n\n const components = resolveComponents()\n .map(component => ({\n loader: component.loader,\n element: document.querySelector(`[data-component=\"${component.name}\"]`)\n }))\n .filter(component => component.element);\n\n /* Observer Config */\n const observerConfig = {\n root: null, // avoiding 'root' or setting it to 'null' sets it to default value: viewport\n rootMargin: '0px',\n threshold: 0.15\n };\n\n /**\n * Observer to lazy load modules based on\n * currently viewed components in the viewport\n */\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.intersectionRatio > 0) {\n const { loader } = components\n .filter(component => component.element === entry.target)\n .reduce(acc => acc);\n\n /**\n * Init component with its loader and then\n * unobserve from this entry so we dont\n * call the init of the component more\n * than once\n */\n loader().then(module => {\n module.default();\n\n observer.unobserve(entry.target);\n });\n }\n });\n }, observerConfig);\n\n components.forEach(component => {\n observer.observe(component.element);\n });\n\n /* ClickToCall */\n getClickToCall().then(module => module.default());\n\n /* Toast */\n getToastAsync().then(module => module.default());\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n MainRequestCru > Client > Components\n ========================================================================== */\n\n/**\n * ClickToCall\n */\nconst getClickToCall = () => {\n return import(\n /* webpackChunkName: \"click-to-call\" */\n '@bluekiri/alexandria-contrib-components/components/click-to-call/client/js'\n );\n};\n\n/**\n * BreadcrumbsIdCru\n */\nconst getBreadcrumbsIdCru = () => {\n return import(\n /* webpackChunkName: \"breadcrumbs-id-cru\" */\n '../../../breadcrumbs-id-cru/client/js'\n );\n};\n\n/**\n * NewsletterAgent\n */\nconst getNewsletterAgent = () => {\n return import(\n /* webpackChunkName: \"newsletter-agent\" */\n '../../../newsletter-agent/client/js'\n );\n};\n\n/**\n * CarouselBanner\n */\nconst getCarouselBanner = () => {\n return import(\n /* webpackChunkName: \"carousel-banner\" */\n '../../../carousel-banner/client/js'\n );\n};\n\n/**\n * TabsRoute\n */\nconst getTabsRoute = () => {\n return import(\n /* webpackChunkName: \"tabs-route\" */\n '../../../tabs-route/client/js'\n );\n};\n\n/**\n * ItineraryDyn\n */\nconst getItineraryDyn = () => {\n return import(\n /* webpackChunkName: \"itinerary-dyn\" */\n '../../../itinerary-dyn/client/js'\n );\n};\n\n/**\n * ShipSection\n */\nconst getShipSection = () => {\n return import(\n /* webpackChunkName: \"ship-section\" */\n '../../../ship-section/client/js'\n );\n};\n\n/**\n * AdvantagesPromotions\n */\nconst getAdvantagesPromotions = () => {\n return import(\n /* webpackChunkName: \"advantages-promotions\" */\n '../../../advantages-promotions/client/js'\n );\n};\n\n/**\n * PackageItemSection\n */\nconst getPackageItemSection = () => {\n return import(\n /* webpackChunkName: \"package-item-section\" */\n '../../../package-item-section/client/js'\n );\n};\n\n/**\n * BannersMask\n */\nconst getBannersMask = () => {\n return import(\n /* webpackChunkName: \"banners-mask\" */\n '../../../banners-mask/client/js'\n );\n};\n\n/**\n * toast\n */\nconst getToastAsync = () => {\n return import(\n /* webpackChunkName: \"toast\" */\n '../../../toast-async/client/js'\n );\n};\n\n/**\n * toast\n */\nconst getInformationCarousel = () => {\n return import(\n /* webpackChunkName: \"toast\" */\n '../../../information-carousel/client/js'\n );\n};\n\n/**\n * Components\n */\nconst COMPONENTS = [\n {\n loader: getBreadcrumbsIdCru,\n name: 'BreadcrumbsIdCru'\n },\n {\n loader: getNewsletterAgent,\n name: 'NewsletterAgent'\n },\n {\n loader: getCarouselBanner,\n name: 'CarouselBanner'\n },\n {\n loader: getShipSection,\n name: 'ShipSection'\n },\n {\n loader: getAdvantagesPromotions,\n name: 'AdvantagesPromotions'\n },\n {\n loader: getTabsRoute,\n name: 'TabsRoute'\n },\n {\n loader: getItineraryDyn,\n name: 'ItineraryDyn'\n },\n {\n loader: getPackageItemSection,\n name: 'PackageItemSection'\n },\n {\n loader: getBannersMask,\n name: 'BannersMask'\n },\n {\n loader: getInformationCarousel,\n name: 'InformationCarousel'\n }\n];\n\n/**\n * Resolver components\n */\nfunction resolveComponents() {\n return COMPONENTS;\n}\n\nmodule.exports = {\n resolveComponents,\n getClickToCall,\n getToastAsync\n};\n","/* ==========================================================================\n MainRequestCru > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initFloatingHeader } = require('./floating-header');\nconst { initCardRequest } = require('./card-request');\nconst { initCircuitContentCru } = require('./circuit-content-cru');\nconst { initBtnImportantInfo } = require('./button-important-info');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Floating Header */\n initFloatingHeader(this);\n\n /* Card request */\n initCardRequest(this);\n\n /* Circuit Content Cru */\n initCircuitContentCru(this);\n\n /* Important Info Button */\n initBtnImportantInfo(this);\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n MainRequestCru > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n MainRequest > Client > FloatingHeader\n ========================================================================== */\n\n/* Modules */\nconst FloatingHeader = require('../../../../floating-header/client/js');\n\n/* Init */\nfunction initFloatingHeader(instance) {\n const panel = instance;\n\n panel.floatingHeader = FloatingHeader();\n}\n\n/* Exports */\nmodule.exports = {\n initFloatingHeader\n};\n","/* ==========================================================================\n FloatingHeader > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * FloatingHeader component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function FloatingHeader(selector = '[data-component=FloatingHeader]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n sticky: instance.element.querySelector('[data-sticky]')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Components goto */\n instance.components = instance.config.components.map(item =>\n document.querySelector(`[data-component=\"${item}\"]`)\n );\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n FloatingHeader > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initButtons } = require('./button');\nconst { initScroll } = require('./scroll');\nconst { initQuote } = require('./quote');\n\nconst configuration = require('./config');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n },\n toggleFixed: () => {\n return this.store.dispatch(actions.toggleFixed());\n },\n activeButton: target => {\n return this.store.dispatch(actions.activeButton(target));\n },\n scrollTo: target => {\n return this.store.dispatch(actions.scrollTo(target));\n },\n lockScroll: () => {\n return this.store.dispatch(actions.lockScroll());\n },\n unlockScroll: () => {\n return this.store.dispatch(actions.unlockScroll());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n toggleFixed: this.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_FIXED) return;\n\n if (state.data.isFixed) {\n this.hooks.sticky.classList.add(configuration().css.fixed);\n this.element.style.height = `${this.hooks.sticky.offsetHeight + 20}px`;\n setTimeout(() => {\n this.hooks.sticky.classList.add('show-header');\n }, 50);\n return;\n }\n\n this.hooks.sticky.classList.remove('show-header');\n this.element.style.height = '';\n\n setTimeout(() => this.hooks.sticky.classList.remove(configuration().css.fixed), 50);\n }),\n activeButton: this.store.subscribe((state, action) => {\n if (action.type !== types.ACTIVE_BUTTON) return;\n\n this.buttons.map(item => item.element.classList.remove(configuration().css.selected));\n\n const button = this.buttons.filter(item => item.config.value === action.payload);\n\n if (button.length) button[0].element.classList.add(configuration().css.selected);\n }),\n scrollTo: this.store.subscribe((state, action) => {\n if (action.type !== types.SCROLL_TO) return;\n /* Active button */\n this.actions.activeButton(action.payload);\n /* Get componente to scroll at */\n const component =\n this.config.components[action.payload] ||\n document.querySelector(`[data-component=${action.payload}]`);\n\n /* Check that exist */\n if (!component) return;\n\n /* Check if header is fixed */\n const { isFixed } = this.store.state.data;\n\n /* If is not fixed we fix after to scroll */\n if (!isFixed) {\n this.actions.toggleFixed();\n }\n\n /* Get main element and top component to scroll */\n const { element } = this;\n const { top } = component.getBoundingClientRect();\n\n /* Scroll smooth to the component */\n window.scrollTo({\n top: top + window.scrollY - element.offsetHeight,\n behavior: 'smooth'\n });\n\n setTimeout(() => {\n this.actions.unlockScroll();\n }, 1000);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n const { scrollTop } = document.documentElement;\n const { offsetTop } = this.element;\n const { components } = this.config;\n /* Start logic */\n this.config.components = components.reduce(\n (acc, cur) => ({\n ...acc,\n [cur]: document.querySelector(`[data-component=${cur}]`)\n }),\n {}\n );\n\n if (scrollTop >= offsetTop) {\n this.actions.toggleFixed();\n }\n\n return this;\n },\n\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n /* Init buttons */\n initButtons(this);\n\n /* Init scroll */\n initScroll(this);\n\n /* Init quote */\n initQuote(this);\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n FloatingHeader > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n isFixed: false,\n isScrolling: false,\n activeButton: ''\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n case types.TOGGLE_FIXED:\n return {\n ...state,\n isFixed: !state.isFixed\n };\n case types.ACTIVE_BUTTON:\n return {\n ...state,\n activeButton: action.payload\n };\n case types.SCROLL_TO:\n return {\n ...state,\n scrolled: action.payload\n };\n case types.LOCK_SCROLL:\n return {\n ...state,\n isScrolling: true\n };\n case types.UNLOCK_SCROLL:\n return {\n ...state,\n isScrolling: false\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n FloatingHeader > Client > Buttons\n ========================================================================== */\n\n/* Modules */\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\n/* Init quote */\nfunction initButtons(instance) {\n const panel = instance;\n const buttons = instance.element.querySelectorAll('[data-component=ButtonRxjs]');\n panel.buttons = [...buttons].map(item => Button(`[data-component=ButtonRxjs][data-type=${item.dataset.type}]`));\n\n panel.buttons.map(item =>\n item.events.click$.subscribe(() => {\n instance.actions.lockScroll();\n instance.actions.scrollTo(item.config.value);\n })\n );\n}\n\n/* Exports */\nmodule.exports = {\n initButtons\n};\n","/* ==========================================================================\n ButtonRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\nconst { fromEvent } = require('rxjs');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initLoader, destroyLoader } = require('./loader');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n button: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n setContent: content => this.store.dispatch(actions.setContent(content)),\n setIcon: icon => this.store.dispatch(actions.setIcon(icon)),\n destroy: () => this.store.dispatch(actions.destroy()),\n disable: () => this.store.dispatch(actions.disable()),\n display: () => this.store.dispatch(actions.display()),\n enable: () => this.store.dispatch(actions.enable()),\n hide: () => this.store.dispatch(actions.hide())\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n setContent: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_CONTENT) return;\n\n const { context } = this.config;\n const { markdown } = ViewHelpers(context);\n\n if (this.hooks.content) {\n this.hooks.content.innerHTML = markdown(`${action.payload}`);\n }\n }),\n setIcon: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_ICON) return;\n\n if (this.hooks.icon) {\n this.hooks.icon.className = '';\n this.hooks.icon.className = `nico-${action.payload}`;\n }\n }),\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Loader */\n destroyLoader(this);\n\n /* Remove element */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n this.element.classList.add(this.config.css.disable);\n this.element.setAttribute('disabled', '');\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n this.element.classList.remove(this.config.css.hidden);\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n this.element.classList.remove(this.config.css.disable);\n this.element.removeAttribute('disabled');\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n this.element.classList.add(this.config.css.hidden);\n })\n };\n\n return this;\n },\n /* Setup events */\n setupEvents() {\n if (!this.config.events) return this;\n\n this.events = {\n click$: fromEvent(this.element, 'click')\n };\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Check for auto disabled from render */\n const { disabled, content } = this.config;\n\n if (!disabled) {\n return this;\n }\n\n if (content) {\n this.actions.setContent(content);\n }\n\n /* Disable */\n this.actions.disable();\n\n return this;\n },\n /* Init */\n init() {\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Setup events */\n this.setupEvents();\n\n /* Loader */\n initLoader(this);\n\n /* Start */\n this.start();\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","module.exports = {\n isLocal(env = process.env.NODE_ENV) {\n if (!env) {\n return false;\n }\n\n return env.toLowerCase() === 'local';\n },\n\n isDevelopment(env = process.env.NODE_ENV) {\n if (!env) {\n return false;\n }\n\n return env.toLowerCase() === 'dev' || env === 'development';\n },\n\n isStaging(env = process.env.NODE_ENV) {\n if (!env) {\n return false;\n }\n\n return env.toLowerCase() === 'staging' || env.toLowerCase() === 'sta';\n },\n\n isProduction(env = process.env.NODE_ENV) {\n if (!env) {\n return false;\n }\n\n return !(\n this.isLocal(env.toLowerCase()) ||\n this.isDevelopment(env.toLowerCase()) ||\n this.isStaging(env.toLowerCase())\n );\n }\n};\n","/**\n * Module that contains utils for text and html\n */\nmodule.exports = {\n linkDataAtribute,\n tagAttributes,\n tagAttributesObject,\n buildTags,\n getConfigPlaceholder,\n setConfigPlaceholder,\n setSpacingPlaceholder,\n cutStringByWords,\n cutParagraphsByWords,\n countStringWords\n};\n\n/**\n * Pug syntax &attributes -> https://pugjs.org/language/attributes.html\n * Build string of the next data structure from an array\n *\n * @param {Array} [dataAttributes=[]]\n * @returns {object}\n */\nfunction linkDataAtribute(dataAttributes = []) {\n const data = {};\n dataAttributes.forEach(item => {\n data[`data-${item.name}`] = item.value;\n });\n return data;\n}\n\n/**\n * Return html tags attributes as a string\n *\n * @param {array} attributesArray array with a data of the tag attributes\n * @returns {string} the string of HTML attrs\n */\nfunction tagAttributes(attributesArray) {\n const attributesObject = tagAttributesObject(attributesArray);\n return Object.keys(attributesObject)\n .map(name => `${name}= \"${attributesObject[name]}\"`)\n .join(' ');\n}\n\n/**\n * Return html tags attributes as an object\n *\n * @param {array} attributesArray array with a data of the tag attributes\n * @returns {object} the object of HTML attrs\n */\nfunction tagAttributesObject(attributesArray) {\n const attributesObject = {};\n\n attributesArray\n .filter(item => !!item.name)\n .forEach(item => {\n // if value is an array, just join the values as a single string\n const value = Array.isArray(item.value) ? item.value.join(' ') : item.value;\n attributesObject[item.name] = value;\n });\n\n return attributesObject;\n}\n\n/**\n * Builds a list of tags\n *\n * @param {Array} tagsData The array of data for each tag. Each one { content, content_tag?, attributes? }\n * @param {string} [tag='span'] The tag name (span by default)\n * @returns markup html tag with your attributes if has it\n */\nfunction buildTags(tagsData, tag = 'span') {\n return tagsData\n .map(item => {\n const attributes = item.attributes ? ` ${tagAttributes(item.attributes)}` : '';\n let html;\n if (item.content_tag) {\n html = `<${tag}${attributes}><${item.content_tag}>${item.content}`;\n } else {\n html = `<${tag}${attributes}>${item.content}`;\n }\n return html;\n })\n .join('');\n}\n\n/**\n * Generates config for placeholders\n *\n * @param {any} config Model.{placeholder}.data.config\n * @returns config object\n */\nfunction getConfigPlaceholder(config) {\n const newConfig = {};\n newConfig.vertical_spacing_top = config.vertical_spacing_top || false;\n newConfig.vertical_spacing_bottom = config.vertical_spacing_bottom || false;\n newConfig.class = config.class || false;\n return newConfig;\n}\n\n/**\n * Sets placeholders layout\n * @param {object} config - Model.{placeholder}.data.config\n * @returns {string} return class names\n */\nfunction setConfigPlaceholder(config) {\n const newConfig = getConfigPlaceholder(config);\n const spacingClass = setSpacingPlaceholder(newConfig.vertical_spacing_top, newConfig.vertical_spacing_bottom);\n let classes;\n\n if (!spacingClass && !newConfig.class) {\n classes = false;\n } else if (spacingClass) {\n classes = `${spacingClass} `;\n } else {\n classes = '';\n }\n\n if (newConfig.class) {\n newConfig.class.forEach(item => {\n classes += `${item} `;\n });\n }\n\n return classes;\n}\n\n/**\n * Sets class name for the vertical spacing of layout containers(\"placeholder\")\n *\n * @param {any} top Model.{placeholder}.config.vertical_spacing_top\n * @param {any} bottom Model.{placeholder}.config.vertical_spacing_bottom\n * @returns {string} class name\n */\nfunction setSpacingPlaceholder(top, bottom) {\n const verticalSpacingTop = top ? 'spacing-top' : false;\n const verticalSpacingBottom = bottom ? 'spacing-bottom' : false;\n let spacing = false;\n\n if (verticalSpacingBottom && verticalSpacingTop) {\n spacing = `${verticalSpacingTop} ${verticalSpacingBottom}`;\n return spacing;\n }\n\n if (verticalSpacingTop) {\n spacing = verticalSpacingTop;\n }\n\n if (verticalSpacingBottom) {\n spacing = verticalSpacingBottom;\n }\n\n return spacing;\n}\n\n/**\n * Cut long string by words ( or not ) how you want\n *\n * @param {any} text text to be cutted\n * @param {any} [{ limit = 155, splitWord = false, ellipsis = '...' }={}] Options:\n * - limit: maximum of characters to be displayed, NOT WORDS\n * - splitWord: cut words splitting in the middle. if true, will get the last entire words and cut there.\n * - ellipsis: custom ellipsis for the end of the string\n * @returns {string}\n * @example cutStringByWords('my string', { limit: 40} )\n * @example cutStringByWords('my string', { limit: 40, splitWord: true })\n * @example cutStringByWords('my string', { limit: 40, splitWord: true, elipsis: 'xxx' })\n */\nfunction cutStringByWords(text, { limit = 155, splitWord = false, ellipsis = '...' } = {}) {\n const textWithSpace = `${text} `;\n let trimmedString = textWithSpace.substr(0, limit || 155);\n if (!splitWord) {\n trimmedString = trimmedString.substr(0, Math.min(trimmedString.length, trimmedString.lastIndexOf(' ')));\n }\n if (trimmedString.length + 1 < textWithSpace.length && ellipsis !== ' ') {\n trimmedString += ellipsis;\n }\n return trimmedString;\n}\n\n/**\n * Cuts a list of paragraphs using a character limit\n *\n * @param {Array} paragraphs An array of paragraphs\n * @param {Number} limit The character limit\n * @param {string} [ellipsis='...']\n * @returns {Array} The array of paragraphs\n */\nfunction cutParagraphsByWords(paragraphs, limit, ellipsis = '...') {\n const paragraphsSize = paragraphs.length;\n const paragraphsProcessed = [];\n let wordsTotal = 0;\n\n for (let i = 0; i < paragraphsSize; i++) {\n let words = paragraphs[i].split(' ');\n\n if (wordsTotal + words.length <= limit) {\n wordsTotal += words.length;\n paragraphsProcessed.push(paragraphs[i]);\n } else {\n const elementsToInclude = limit - wordsTotal;\n if (elementsToInclude > 0) {\n words = words.splice(0, elementsToInclude);\n paragraphsProcessed.push(words.join(' ') + ellipsis);\n } else {\n paragraphsProcessed[i - 1] = paragraphsProcessed[i - 1] + ellipsis;\n }\n i = paragraphsSize + 1;\n }\n }\n\n return closeMardownInParagraphs(paragraphsProcessed, ellipsis);\n}\n\nfunction closeMardownInParagraphs(paragraphs, ellipsis = '...') {\n const hasStrongTags = text => text.match(/(\\*\\*)/g) && text.match(/(\\*\\*)/g).length % 2 !== 0;\n\n return paragraphs.map(p => {\n if (hasStrongTags(p)) {\n return p.replace(ellipsis, `**${ellipsis}`);\n }\n return p;\n });\n}\n\n/**\n * @name countStringWords\n * @summary count the words from a string\n * @param {string} text - text to be counted\n * @returns {number} total - returns the total number of words at the string\n * @example countStringWords(Model.title)\n */\nfunction countStringWords(text) {\n let count = 0;\n const words = text.toString().split(' ');\n for (let i = 0, { length } = words; i < length; i++) {\n if (words[i] !== '') {\n count++;\n }\n }\n return count;\n}\n","/* ==========================================================================\n ButtonRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n disabled: false,\n display: true,\n content: null,\n icon: null,\n isLoading: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.TOGGLE_LOADING:\n return {\n ...state,\n isLoading: !state.isLoading\n };\n case types.DESTROY:\n return null;\n case types.DISABLE:\n return {\n ...state,\n disabled: true\n };\n case types.DISPLAY:\n return {\n ...state,\n display: true\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: false\n };\n case types.HIDE:\n return {\n ...state,\n display: false\n };\n case types.SET_CONTENT:\n return {\n ...state,\n content: action.payload\n };\n case types.SET_ICON:\n return {\n ...state,\n icon: action.payload\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n ButtonRxjs > Client > Loader\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst configuration = require('../config');\nconst { actions, types } = require('../store/actions');\n\n/* Add */\nfunction addLoader(instance) {\n const { loader = false } = instance.hooks;\n\n if (loader) {\n return;\n }\n\n const template = html(`\n
\n
\n
\n `);\n\n const node = toNode(template)[0];\n\n const panel = instance;\n\n /* DOM */\n instance.element.classList.add(configuration().css.loading);\n instance.element.appendChild(node);\n\n /* Disable */\n instance.element.setAttribute('disabled', true);\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n loader: instance.element.querySelector('[data-loader]')\n };\n}\n\n/* Remove */\nfunction removeLoader(instance) {\n const { loader = false } = instance.hooks;\n\n if (!loader) {\n return;\n }\n\n const panel = instance;\n\n /* DOM */\n instance.element.removeChild(instance.hooks.loader);\n instance.element.classList.remove(configuration().css.loading);\n\n /* Enable */\n instance.element.removeAttribute('disabled');\n\n /* Hooks */\n delete panel.hooks.loader;\n}\n\n/* Init */\nfunction initLoader(instance) {\n /* Data */\n const { hasLoader } = instance.config;\n\n if (!hasLoader) {\n return;\n }\n\n const panel = instance;\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n toggleLoading: () => instance.store.dispatch(actions.toggleLoading())\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n toggleLoading: instance.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_LOADING) return;\n\n const { isLoading } = state.button;\n\n if (!isLoading) {\n /* Remove */\n removeLoader(instance);\n\n return;\n }\n\n /* Add */\n addLoader(instance);\n })\n };\n}\n\n/* Destroy */\nfunction destroyLoader(instance) {\n /* Data */\n const { hasLoader } = instance.config;\n\n if (!hasLoader) {\n return;\n }\n\n const panel = instance;\n\n /* Reactions */\n instance.reactions.toggleLoading.unsubscribe();\n delete panel.reactions.toggleLoading;\n\n /* Actions */\n delete panel.actions.toggleLoading;\n}\n\n/* Exports */\nmodule.exports = {\n initLoader,\n destroyLoader\n};\n","/* ==========================================================================\n FloatingHeader > Client > Scroll\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\n\nfunction initScroll(instance) {\n const panel = instance;\n const { components, element } = instance;\n const { offsetTop } = element;\n\n panel.subscriptions = {\n ...instance.subscriptions,\n onScroll$: fromEvent(document, 'scroll').subscribe(() => {\n const { scrollTop } = document.documentElement;\n const { isFixed } = instance.store.state.data;\n if (scrollTop >= offsetTop && !isFixed) {\n instance.actions.toggleFixed();\n }\n if (scrollTop <= offsetTop && isFixed) {\n instance.actions.toggleFixed();\n }\n })\n };\n\n const observer = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n const { isScrolling } = instance.store.select('data');\n\n if (entry.isIntersecting && !isScrolling) {\n instance.actions.activeButton(entry.target.dataset.component);\n }\n });\n },\n {\n root: null, // avoiding 'root' or setting it to 'null' sets it to default value: viewport\n rootMargin: '120px 0px 0px 0px',\n threshold: 0.35\n }\n );\n\n /* Observe rest of components */\n components.forEach(component => {\n observer.observe(component);\n });\n}\n\nmodule.exports = {\n initScroll\n};\n","/* ==========================================================================\n FloatingHeader > Client > Quote\n ========================================================================== */\n\n/* Modules */\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\nconst configuration = require('../config');\n\n/* Init quote */\nfunction initQuote(instance) {\n const panel = instance;\n\n panel.quoteBtn = Button(`[data-component=ButtonRxjs][data-type=${configuration().type.quote}]`);\n}\n\n/* Exports */\nmodule.exports = {\n initQuote\n};\n","/* ==========================================================================\n MainRequest > Client > CardRequest\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\n\nconst CardRequest = require('../../../../card-request/client/js');\n\n/* Init */\nfunction initCardRequest(instance) {\n const panel = instance;\n\n panel.cardRequest = CardRequest();\n\n if (instance.cardRequest.hooks.moreAdvantages) {\n panel.cardRequest.subscriptions = {\n ...instance.cardRequest.subscriptions,\n clickAdvantagesAdvantages: fromEvent(instance.cardRequest.hooks.moreAdvantages, 'click').subscribe(() => {\n panel.floatingHeader.actions.scrollTo('AdvantagesPromotions');\n })\n };\n }\n\n if (instance.cardRequest.hooks.flight) {\n panel.cardRequest.subscriptions = {\n ...instance.cardRequest.subscriptions,\n clickFlight: fromEvent(instance.cardRequest.hooks.flight, 'click').subscribe(() => {\n panel.floatingHeader.actions.scrollTo('PackageItemSection');\n })\n };\n }\n}\n\n/* Exports */\nmodule.exports = {\n initCardRequest\n};\n","/* ==========================================================================\n CardRequest > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * CardRequest component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CardRequest(selector = '[data-component=CardRequest]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n moreAdvantages: instance.element.querySelector('[data-more-advantages]'),\n advantages: instance.element.querySelector('[data-advantages]'),\n promotions: instance.element.querySelector('[data-promotions]'),\n flightHotel: instance.element.querySelector('[data-flight-hotel]'),\n flight: instance.element.querySelector('[data-flight]')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.images = initImages(selector, instance);\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n\nfunction initImages(selector, instance) {\n const images = {\n logo: Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.companyImage}\"]`),\n logoDyn: Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.cruDynImage}\"]`),\n logo2: Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.companyImage}-2\"]`),\n logoDyn2: Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.cruDynImage}-2\"]`),\n map: Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.mapImage}\"]`),\n ship: Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.shipImage}\"]`),\n promos: [\n ...instance.element.querySelectorAll(\n `${selector} [data-component=\"ImageRxjs\"][data-type^=\"${config().type.promoImage}\"]`\n )\n ].map((item, index) => {\n return Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.promoImage}-${index}\"]`);\n })\n };\n\n return images;\n}\n","/* ==========================================================================\n InputRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\nconst { fromFetch } = require('rxjs/fetch');\nconst { take } = require('rxjs/operators');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n image: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide()),\n setSrc: src => this.store.dispatch(actions.setSrc(src))\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean instance */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n this.element.classList.remove(css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n this.element.classList.add(css.hidden);\n }),\n setSrc: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_SRC) return;\n\n const { loaded } = state.image;\n\n if (loaded) return;\n\n /* Set src to the img element */\n this.hooks.img.src = action.payload;\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n lazyLoad: fromEvent(this.hooks.img, 'lazyloaded')\n .pipe(take(1))\n .subscribe(() => {\n const { src } = this.hooks.img.dataset;\n\n /* Dispatch action */\n this.actions.setSrc(src);\n }),\n error: fromEvent(this.hooks.img, 'error')\n .pipe(take(1))\n .subscribe(() => {\n const { alternative } = this.hooks.img.dataset;\n\n this.hooks.img.src = alternative;\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n const { isLazy = true, css, alternative } = this.config;\n\n if (isLazy) this.hooks.img.classList.add(css.load);\n\n if (!isLazy) {\n fromFetch(this.hooks.img.src)\n .pipe(take(1))\n .subscribe(data => {\n if (data.status === 404 && alternative) {\n this.hooks.img.src = alternative;\n }\n });\n }\n },\n /* Init */\n init() {\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Requier library */\n module.require('lazysizes');\n\n /* Start */\n if (this.config.start) this.start();\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n ImageRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n loaded: false,\n hidden: false,\n src: null\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return null;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.SET_SRC:\n return {\n ...state,\n loaded: true,\n src: action.payload\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CardRequest > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { fromEvent } = require('rxjs');\nconst { tap, filter, map } = require('rxjs/operators');\n\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\nconst { startFooter, destroyFooter } = require('./footer');\nconst { initAside } = require('./aside');\nconst { addTooltip, destroyTooltip } = require('./tooltip');\nconst { addPriceTooltip, destroyPriceTooltip } = require('./price-tooltip');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n card: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n },\n display: () => {\n return this.store.dispatch(actions.display());\n },\n hide: () => {\n return this.store.dispatch(actions.hide());\n },\n setData: data => {\n return this.store.dispatch(actions.setData(data));\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /**\n * Footer\n */\n destroyFooter(this);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n\n this.element.classList.remove(css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n\n this.element.classList.add(css.hidden);\n }),\n setData: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_DATA) return;\n\n /**\n * Since we have all DOM ready from the templating\n * part to avoid multiple calls to the layout paint\n * from browser, we just have to init its components\n */\n\n /**\n * Footer\n */\n startFooter(this);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n if (this.hooks.advantages) {\n this.subscriptions = {\n advantagesMouseover: fromEvent(this.hooks.advantages, 'mouseover')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => !this.tooltip),\n map(event => event.target.closest('[data-advantage]')),\n filter(element => element !== null)\n )\n .subscribe(element => {\n const { advantage } = element.dataset;\n addTooltip(this, { type: 'advantages', index: advantage }, element);\n\n this.tooltip.element.classList.add('is-visible');\n }),\n advantagesMouseout: fromEvent(this.hooks.advantages, 'mouseout')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => this.tooltip),\n map(event => event.target.closest('[data-advantage]')),\n filter(element => element !== null)\n )\n .subscribe(() => {\n this.tooltip.element.classList.remove('is-visible');\n destroyTooltip(this);\n })\n };\n }\n if (this.hooks.promotions) {\n this.subscriptions = {\n ...this.subcriptions,\n promotionsMouseover: fromEvent(this.hooks.promotions, 'mouseover')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => !this.tooltip),\n map(event => event.target.closest('[data-type]')),\n filter(element => element !== null)\n )\n .subscribe(element => {\n const index = this.images.promos.map(item => item.element).indexOf(element);\n addTooltip(this, { type: 'promotions', index }, element);\n\n this.tooltip.element.classList.add('is-visible');\n }),\n promotionsMouseout: fromEvent(this.hooks.promotions, 'mouseout')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => this.tooltip),\n map(event => event.target.closest('[data-type]')),\n filter(element => element !== null)\n )\n .subscribe(() => {\n this.tooltip.element.classList.remove('is-visible');\n destroyTooltip(this);\n })\n };\n }\n\n if (this.config.flightAndHotel) {\n const { price, description } = this.config.flightAndHotel;\n\n this.subscriptions = {\n ...this.subscriptions,\n flightHotelClick: fromEvent(this.hooks.flightHotel, 'click').subscribe(() => {\n window.location.href = this.config.flightAndHotel.href;\n })\n };\n\n if (price || description) {\n this.subscriptions = {\n ...this.subscriptions,\n flightHotelOver: fromEvent(this.hooks.flightHotel, 'mouseover')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => !this.priceTooltip)\n )\n .subscribe(() => {\n addPriceTooltip({ price, description }, this.hooks.flightHotel, this);\n\n this.priceTooltip.element.classList.add('is-visible');\n }),\n flightHotelOut: fromEvent(this.hooks.flightHotel, 'mouseout')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => this.priceTooltip)\n )\n .subscribe(() => {\n this.priceTooltip.element.classList.remove('is-visible');\n destroyPriceTooltip(this);\n })\n };\n }\n }\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n /* Data */\n const { id = -1, cruDyn, favorite } = this.config;\n\n /* Dispatch action */\n this.actions.setData({\n id,\n cruDyn,\n favourite: !!favorite\n });\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Init aside */\n initAside(this);\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n CardRequest > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n hidden: false,\n id: -1,\n cruDyn: false,\n favourite: false,\n shareVisible: false,\n flightHotelTooltipVisible: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.SET_DATA:\n return {\n ...state,\n id: action.payload.id,\n cruDyn: action.payload.cruDyn,\n favourite: action.payload.favourite\n };\n case types.OPEN_SHARE:\n return {\n ...state,\n shareVisible: true\n };\n case types.CLOSE_SHARE:\n return {\n ...state,\n shareVisible: false\n };\n case types.ADD_FAVOURITE:\n return {\n ...state,\n favourite: true\n };\n case types.DELETE_FAVOURITE:\n return {\n ...state,\n favourite: false\n };\n case types.OPEN_TOOLTIP_FLIGHT_HOTEL:\n return {\n ...state,\n flightHotelTooltipVisible: true\n };\n case types.CLOSE_TOOLTIP_FLIGHT_HOTEL:\n return {\n ...state,\n flightHotelTooltipVisible: false\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CardEndGameRxjs > Client > Footer\n ========================================================================== */\n\n/* Modules */\nconst { initFavourite, destroyFavourite } = require('./favourite');\nconst { initShare, destroyShare } = require('./share');\n\n/* Start footer */\nfunction startFooter(instance) {\n /* Data */\n const { share } = instance.config;\n\n if (share) {\n /* Favorite */\n initFavourite(instance);\n\n /* Share */\n initShare(instance);\n }\n}\n\n/* Destroy footer */\nfunction destroyFooter(instance) {\n /* Data */\n const { share } = instance.config;\n\n if (share) {\n /* Favorite */\n destroyFavourite(instance);\n\n /* Share */\n destroyShare(instance);\n }\n}\n\n/* Exports */\nmodule.exports = {\n startFooter,\n destroyFooter\n};\n","/* ==========================================================================\n CardEndGameRxjs > Client > Footer > Favourite\n ========================================================================== */\n\n/* Modules */\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst { take } = require('rxjs/operators');\n\nconst { actions, types } = require('../store/actions');\n\nconst Services = require('../services');\n\nconst configuration = require('../config');\n\n/* Init favourite */\nfunction initFavourite(instance) {\n const panel = instance;\n\n /* Selector */\n const { selector, config } = instance;\n\n /* Services */\n const { addFavourite, deleteFavourite } = Services(config);\n\n /* Favorite btn */\n panel.favBtn = Button(`${selector} [data-component=\"ButtonRxjs\"][data-type=\"${configuration().type.fav}\"]`);\n\n /* Check if fav button is not a valid value. If is true exit method */\n if (!panel.favBtn) return;\n\n /* Literals */\n const { favoriteLabel, noFavoriteLabel } = config.literals;\n\n /* Set alt literal */\n const favouriteBoolean = instance.store.select('card').favourite;\n\n instance.favBtn.element.setAttribute('title', favouriteBoolean ? noFavoriteLabel : favoriteLabel);\n\n /* Update actions */\n panel.actions = {\n ...panel.actions,\n addFavourite: () => {\n return instance.store.dispatch(actions.addFavourite());\n },\n deleteFavourite: () => {\n return instance.store.dispatch(actions.deleteFavourite());\n }\n };\n\n /* Update reactions */\n panel.reactions = {\n ...panel.reactions,\n addFavourite: instance.store.subscribe((state, action) => {\n if (action.type !== types.ADD_FAVOURITE) return;\n /* Update UI */\n instance.favBtn.actions.setIcon(configuration().icon.heartFilled);\n instance.favBtn.element.setAttribute('title', noFavoriteLabel);\n\n /* Send POST */\n addFavourite()\n .pipe(take(1))\n .subscribe(data => {\n if (data.error) {\n console.error('--- Error adding favourite ---');\n return;\n }\n\n console.log('Added favourite', { data });\n });\n }),\n deleteFavourite: instance.store.subscribe((state, action) => {\n if (action.type !== types.DELETE_FAVOURITE) return;\n\n /* Update UI */\n instance.favBtn.actions.setIcon(configuration().icon.heart);\n instance.favBtn.element.setAttribute('title', favoriteLabel);\n\n /* Send POST */\n deleteFavourite()\n .pipe(take(1))\n .subscribe(data => {\n if (data.error) {\n console.error('--- Error deleting favourite ---');\n return;\n }\n\n console.log('Deleted favourite', { data });\n });\n })\n };\n\n /* Update subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n favourite: panel.favBtn.events.click$.subscribe(event => {\n event.stopPropagation();\n\n /* Data */\n const { favourite } = instance.store.select('card');\n\n /* Dispatch action */\n if (favourite) {\n instance.actions.deleteFavourite();\n return;\n }\n\n instance.actions.addFavourite();\n })\n };\n}\n\n/* Destroy favourite */\nfunction destroyFavourite(instance) {\n const panel = instance;\n\n /* Actions */\n delete panel.actions.addFavourite;\n delete panel.actions.deleteFavourite;\n\n /* Reactions */\n instance.reactions.addFavourite.unsubscribe();\n delete panel.reactions.addFavourite;\n\n instance.reactions.deleteFavourite.unsubscribe();\n delete panel.reactions.deleteFavourite;\n\n /* Subscriptions */\n instance.subscriptions.favourite.unsubscribe();\n delete panel.subscriptions.favourite;\n\n /* Clean */\n instance.favBtn.actions.destroy();\n delete panel.favBtn;\n}\n\n/* Exports */\nmodule.exports = {\n initFavourite,\n destroyFavourite\n};\n","/* ==========================================================================\n CardEndGameRxjs > Client > Services\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { ajax } = require('rxjs/ajax');\nconst { catchError, map } = require('rxjs/operators');\n\n/* Exports */\nmodule.exports = function Services(config = {}) {\n /* Data */\n const { endpoints } = config;\n\n /**\n * Add favourite\n * @param {number} id of the product\n * @returns {JSON} data from the post\n */\n function addFavourite() {\n /* Build url */\n const url = endpoints.addFavourite;\n\n return ajax({\n url,\n method: 'GET',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'\n }\n }).pipe(\n map(() => {\n return of({ added: true });\n }),\n catchError(err => {\n return of({ error: true, name: err.name, message: err.message });\n })\n );\n }\n\n /**\n * Delete favourite\n * @param {number} id of the product\n * @returns {JSON} data from the post\n */\n function deleteFavourite() {\n /* Build url */\n const url = endpoints.deleteFavourite;\n\n return ajax({\n url,\n method: 'GET',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'\n }\n }).pipe(\n map(() => {\n return of({ deleted: true });\n }),\n catchError(err => {\n return of({ error: true, name: err.name, message: err.message });\n })\n );\n }\n\n return {\n addFavourite,\n deleteFavourite\n };\n};\n","/* ==========================================================================\n CardEndGameRxjs > Client > Footer > Share\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst { fromEvent } = require('rxjs');\nconst { take, filter } = require('rxjs/operators');\n\nconst { actions, types } = require('../store/actions');\n\nconst Share = require('../../../../share-rxjs/client/js');\nconst ShareCfg = require('../../../../share-rxjs/client/js/config');\nconst ShareTemplate = require('../../../../share-rxjs/template');\n\nconst configuration = require('../config');\n\n/* Init share */\nfunction initShare(instance) {\n const panel = instance;\n\n /* Selector */\n const { selector, config } = instance;\n\n /* Share btn */\n panel.shareBtn = Button(`${selector} [data-component=\"ButtonRxjs\"][data-type=\"${configuration().type.share}\"]`);\n\n if (!panel.shareBtn) return;\n\n /* Literals */\n const { shareByLabel } = config.literals;\n\n instance.shareBtn.element.setAttribute('title', shareByLabel);\n\n /* Update actions */\n panel.actions = {\n ...panel.actions,\n closeShare: () => {\n return instance.store.dispatch(actions.closeShare());\n },\n openShare: () => {\n return instance.store.dispatch(actions.openShare());\n }\n };\n\n /* Update reactions */\n panel.reactions = {\n ...panel.reactions,\n closeShare: instance.store.subscribe((state, action) => {\n if (action.type !== types.CLOSE_SHARE) return;\n\n /* Destroy tooltip */\n destroyTooltip(instance);\n }),\n openShare: instance.store.subscribe((state, action) => {\n if (action.type !== types.OPEN_SHARE) return;\n\n /* Add tooltip */\n addTooltip(instance);\n })\n };\n\n /* Update subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n openShare: panel.shareBtn.events.click$\n .pipe(filter(() => !instance.store.select('card').shareVisible))\n .subscribe(event => {\n event.stopPropagation();\n\n /* Dispatch action */\n instance.actions.openShare();\n })\n };\n}\n\n/* Destroy share */\nfunction destroyShare(instance) {\n const panel = instance;\n\n /* Actions */\n delete panel.actions.closeShare;\n delete panel.actions.openShare;\n\n /* Reactions */\n instance.reactions.closeShare.unsubscribe();\n delete panel.reactions.closeShare;\n\n instance.reactions.openShare.unsubscribe();\n delete panel.reactions.openShare;\n\n /* Subscriptions */\n instance.subscriptions.openShare.unsubscribe();\n delete panel.subscriptions.openShare;\n\n /* Clean */\n instance.shareBtn.actions.destroy();\n\n /* Tooltip */\n if (instance.share) {\n destroyTooltip(instance);\n }\n}\n\n/* Create tooltip */\nfunction createTooltip(instance) {\n /* Data */\n const { context, literals, share, endpoints, id, cruDyn } = instance.config;\n\n /* Template */\n const template = html(`\n
\n ${ShareTemplate(\n addStyle(\n addData(\n {\n config: {\n endpoints,\n literals\n },\n ...share,\n /**\n * Since we want to avoid passing email on dynamic cruise\n * we will create the model logic here, so we can remove\n * it after, when the printing of dynamic cruise email share\n * is done\n */\n email: cruDyn ? false : share.email,\n id\n },\n {\n type: configuration().type.share\n }\n ),\n [ShareCfg().css.vertical]\n ),\n context\n )}\n
\n `);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add tooltip */\nfunction addTooltip(instance) {\n const panel = instance;\n\n /* Node */\n const node = createTooltip(instance);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Placement info */\n const viewportOffset = instance.shareBtn.element.getBoundingClientRect();\n const placementEl = {\n width: instance.shareBtn.element.offsetWidth,\n height: instance.shareBtn.element.offsetHeight,\n top: viewportOffset.top + window.scrollY,\n left: viewportOffset.left\n };\n\n node.style.left = `${placementEl.left - placementEl.width}px`;\n node.style.top = `${placementEl.top + placementEl.height + 12}px`;\n\n /* Update reference */\n panel.shareTooltip = node;\n\n /* Init */\n fromEvent(node, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n /* Init Share component */\n panel.share = Share(`[data-component='ShareRxjs'][data-type='${configuration().type.share}']`);\n });\n\n /* Subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n closeShare: fromEvent(window.document, 'click')\n .pipe(take(1))\n .subscribe(() => {\n /* Dispatch action */\n instance.actions.closeShare();\n })\n };\n\n /* Add visibility */\n setTimeout(() => node.classList.add(configuration().css.visible), 50);\n}\n\n/* Destroy tooltip */\nfunction destroyTooltip(instance) {\n const panel = instance;\n\n /* Subscription */\n fromEvent(instance.shareTooltip, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n panel.subscriptions.closeShare.unsubscribe();\n delete panel.subscriptions.closeShare;\n\n panel.shareTooltip.parentNode.removeChild(panel.shareTooltip);\n\n delete panel.share;\n delete panel.shareTooltip;\n });\n\n /* Start animation */\n instance.shareTooltip.classList.remove(configuration().css.visible);\n}\n\n/* Exports */\nmodule.exports = {\n initShare,\n destroyShare\n};\n","/* ==========================================================================\n ShareRxjs > Client\n ========================================================================== */\n\n/* Import modules */\n\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ShareRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ShareRxjs(selector = '[data-component=ShareRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Email button */\n if (instance.config.email) {\n instance.emailShare = Button(\n `${selector} [data-component='ButtonRxjs'][data-type='${config().type.emailShare}']`,\n {\n ...configuration.emailShare\n }\n );\n }\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n ShareRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { addModal, destroyModal } = require('./modal');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n share: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n },\n enableEmail: () => {\n return this.store.dispatch(actions.enableEmail());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Data */\n const { email, modal } = state.share;\n\n /* Modal */\n if (modal) {\n this.emailShare.actions.destroy();\n this.actions.closeModal();\n\n return;\n }\n\n /* Email */\n if (email) {\n this.emailShare.actions.destroy();\n }\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n enableEmail: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE_EMAIL) return;\n\n /* Update subscriptions */\n this.subscriptions.emailShare = this.emailShare.events.click$.subscribe(event => {\n event.stopPropagation();\n\n /* Dispatch action */\n this.actions.openModal();\n });\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Data */\n const { email } = this.config;\n\n if (email) {\n /* Update actions */\n this.actions = {\n ...this.actions,\n openModal: () => {\n return this.store.dispatch(actions.openModal());\n },\n closeModal: () => {\n return this.store.dispatch(actions.closeModal());\n }\n };\n\n /* Update reactions */\n this.reactions = {\n ...this.reactions,\n openModal: this.store.subscribe((state, action) => {\n if (action.type !== types.OPEN_MODAL) return;\n\n /* Adding modal */\n addModal(this);\n }),\n closeModal: this.store.subscribe((state, action) => {\n if (action.type !== types.CLOSE_MODAL) return;\n\n /* Destroying modal */\n destroyModal(this);\n })\n };\n\n /* Dispatch action */\n this.actions.enableEmail();\n }\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n ShareRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n email: false,\n modal: false,\n legal: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.ENABLE_EMAIL:\n return {\n ...state,\n email: true\n };\n case types.OPEN_MODAL:\n return {\n ...state,\n modal: true\n };\n case types.CLOSE_MODAL:\n return {\n ...state,\n modal: false\n };\n case types.CLOSE_LEGAL:\n return {\n ...state,\n legal: false\n };\n case types.OPEN_LEGAL:\n return {\n ...state,\n legal: true\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n ShareRxjs > Client > Modal\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst { fromEvent, merge } = require('rxjs');\nconst { take, filter } = require('rxjs/operators');\n\nconst Modal = require('@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js');\nconst ModalTemplate = require('@bluekiri/alexandria-contrib-components/components/modal-rxjs/template');\n\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\nconst InputCfg = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/config');\nconst InputTemplate = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/template');\n\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\nconst ButtonTemplate = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/template');\n\nconst { actions, types } = require('../store/actions');\n\nconst Services = require('../services');\n\nconst { addTooltip, destroyTooltip } = require('../tooltip');\n\nconst { isEmail } = require('../../../../../helpers/email');\n\nconst config = require('../config');\n\n/* Email submit render */\nconst emailSubmitRender = ({ emailSubmit }, context) => {\n return ButtonTemplate(\n addStyle(\n addData(\n {\n content: emailSubmit\n },\n {\n type: config().type.emailSubmit\n }\n ),\n [config().css.submit]\n ),\n context\n );\n};\n\n/* Email input render */\nconst emailInputRender = ({ emailPlaceholder }, context) => {\n return InputTemplate(\n addStyle(\n addData(\n {\n config: {\n isAlternative: true\n },\n name: 'email',\n placeholder: emailPlaceholder\n },\n {\n type: config().type.emailInput\n }\n ),\n [InputCfg().css.withBorder, config().css.input]\n ),\n context\n );\n};\n\n/* Email form render */\nconst emailFormRender = ({ content, legal }, literals, context) => {\n /* Data */\n const { items = [] } = legal;\n\n /* View helpers */\n const { markdown } = ViewHelpers(context);\n\n return html(`\n

${content}

\n
\n ${emailInputRender(literals, context)}\n ${emailSubmitRender(literals, context)}\n
\n

\n ${html(\n items.map(item => {\n return item.link\n ? ``\n : ``;\n })\n )}\n

\n `);\n};\n\n/* Create modal */\nfunction createModal(instance) {\n /* Data */\n const { email, css, context, literals } = instance.config;\n\n /* Template */\n const template = ModalTemplate(\n addStyle(\n addData(\n {\n title: email.title,\n body: emailFormRender(email, literals, context)\n },\n {\n type: config().type.emailModal\n }\n ),\n [css.modal]\n )\n );\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add modal */\nfunction addModal(instance) {\n const panel = instance;\n\n /* Node */\n const node = createModal(instance);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Selector */\n const selector = `[data-component='ModalRxjs'][data-type='${config().type.emailModal}']`;\n\n /* Init */\n panel.modal = Modal(selector);\n\n /* Input */\n panel.emailInput = Input(`${selector} [data-component='InputRxjs'][data-type='${config().type.emailInput}']`);\n\n /* Submit */\n panel.emailSubmit = Button(`${selector} [data-component='ButtonRxjs'][data-type='${config().type.emailSubmit}']`);\n\n /* Update */\n panel.subscriptions.modalOpen = fromEvent(panel.modal.element, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n /* Actions */\n panel.actions = {\n ...panel.actions,\n openLegal: () => {\n return instance.store.dispatch(actions.openLegal());\n },\n closeLegal: () => {\n return instance.store.dispatch(actions.closeLegal());\n }\n };\n\n /* Reactions */\n panel.reactions = {\n ...panel.reactions,\n closeLegal: instance.store.subscribe((state, action) => {\n if (action.type !== types.CLOSE_LEGAL) return;\n\n /* Destroy tooltip */\n destroyTooltip(instance);\n }),\n openLegal: instance.store.subscribe((state, action) => {\n if (action.type !== types.OPEN_LEGAL) return;\n\n /* Add tooltip */\n addTooltip(instance);\n })\n };\n\n /* Update subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n modalCloses: merge(instance.modal.events.click$, instance.modal.events.keyup$)\n .pipe(take(1))\n .subscribe(() => {\n /* Dispatch action */\n instance.actions.closeModal();\n }),\n emailSubmits: instance.emailSubmit.events.click$.subscribe(() => {\n /* Data */\n const { value } = instance.emailInput.store.select('input');\n\n if (isEmail(value)) {\n const { postEmail } = Services(instance.config);\n\n instance.emailSubmit.element.classList.add('is-loading');\n\n /* Send POST */\n postEmail(value).subscribe(data => {\n if (data.error) {\n addMessageError(instance);\n instance.emailSubmit.element.classList.remove('is-loading');\n\n /* Dispatch error action */\n instance.emailInput.actions.setError();\n return;\n }\n addMessageSuccess(instance);\n instance.emailSubmit.element.classList.remove('is-loading');\n\n /* Dispatch action to reset */\n instance.emailInput.actions.resetStatus();\n });\n } else {\n /* Dispatch error action */\n instance.emailInput.actions.setError();\n }\n }),\n openLegal: fromEvent(instance.modal.element.querySelector('[data-legal-tooltip]'), 'click')\n .pipe(filter(() => !instance.store.select('share').legal))\n .subscribe(event => {\n event.stopPropagation();\n\n /* Dispatch action */\n instance.actions.openLegal();\n })\n };\n });\n\n /* Display */\n setTimeout(() => instance.modal.actions.display(), 50);\n}\n\n/* Destroy modal */\nfunction destroyModal(instance) {\n const panel = instance;\n\n /* Subscription to destroy */\n panel.subscriptions.modalDestroy = fromEvent(instance.modal.element, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n instance.subscriptions.modalCloses.unsubscribe();\n instance.subscriptions.emailSubmits.unsubscribe();\n instance.subscriptions.openLegal.unsubscribe();\n\n instance.emailInput.actions.destroy();\n instance.emailSubmit.actions.destroy();\n instance.modal.actions.destroy();\n\n delete panel.emailInput;\n delete panel.emailSubmit;\n delete panel.modal;\n });\n\n /* Hide */\n instance.modal.actions.hide();\n}\n\n/* Add message success */\nfunction addMessageSuccess(instance) {\n const { MailSuccessLabel } = instance.config.literals;\n\n const node = toNode(`

${MailSuccessLabel}

`)[0];\n\n instance.modal.element.querySelector('[data-modal-wrapper] .modal-rxjs__body').appendChild(node);\n}\n/* Add message error */\nfunction addMessageError(instance) {\n const { MailErrorLabel } = instance.config.literals;\n\n const node = toNode(`

${MailErrorLabel}

`)[0];\n\n instance.modal.element.querySelector('[data-modal-wrapper] .modal-rxjs__body').appendChild(node);\n}\n\n/* Exports */\nmodule.exports = {\n addModal,\n destroyModal\n};\n","/* ==========================================================================\n ModalRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent, merge } = require('rxjs');\nconst { filter, take, tap } = require('rxjs/operators');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst ESCAPE_CODE = 27;\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n modal: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide())\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Data */\n const { hasClose } = this.config;\n\n /* close */\n if (hasClose) {\n this.close.actions.destroy();\n }\n\n /* Unsubscribe */\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n /* Styles */\n const { css } = this.config;\n\n /* Update UI */\n this.element.classList.add(css.visible);\n document.body.classList.add(css.modalVisible);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n /* Styles */\n const { css } = this.config;\n\n /* Update UI */\n this.element.classList.remove(css.visible);\n document.body.classList.remove(css.modalVisible);\n })\n };\n\n return this;\n },\n /* Setup events */\n setupEvents() {\n if (this.events) return this;\n\n /* Data */\n const { hasClose } = this.config;\n\n /* Window clicks */\n const windowClick$ = fromEvent(window.document, 'click').pipe(\n filter(({ target }) => !target.closest('[data-modal-wrapper]'))\n );\n\n /* Clicks merged */\n const mergedClick$ = hasClose ? merge(this.close.events.click$, windowClick$) : windowClick$;\n\n /* Events */\n this.events = {\n click$: mergedClick$.pipe(\n take(1),\n tap(event => event.stopPropagation())\n ),\n keyup$: fromEvent(window.document, 'keyup').pipe(\n filter(event => event.keyCode === ESCAPE_CODE),\n take(1)\n )\n };\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Setup events */\n this.setupEvents();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n ModalRxjs > Client > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n hidden: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n InputRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initLoader, destroyLoader } = require('./loader');\n\nconst configuration = require('./config');\n\nconst isText = (input = HTMLInputElement) => input.type === 'text';\nconst isButton = (input = HTMLInputElement) => input.type === 'button';\n\n/* Prototype */\nconst prototype = {\n /* Pairing label */\n setPairing() {\n if (this.hooks.label) {\n this.hooks.input.setAttribute('id', this.id);\n this.hooks.label.setAttribute('for', this.id);\n }\n\n return this;\n },\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n input: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n disable: () => this.store.dispatch(actions.disable()),\n display: () => this.store.dispatch(actions.display()),\n enable: () => this.store.dispatch(actions.enable()),\n hide: () => this.store.dispatch(actions.hide()),\n resetStatus: () => this.store.dispatch(actions.resetStatus()),\n setUiState: data => this.store.dispatch(actions.setUiState(data)),\n setError: () => this.store.dispatch(actions.setError()),\n setValid: () => this.store.dispatch(actions.setValid()),\n toggleActive: () => this.store.dispatch(actions.toggleActive()),\n setValue: value => this.store.dispatch(actions.setValue(value)),\n changeValue: value => this.store.dispatch(actions.changeValue(value)),\n reset: () => this.store.dispatch(actions.reset())\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Loader */\n destroyLoader(this);\n\n /* Unsubscribe */\n this.unsubscribe();\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean instance */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n this.element.classList.add(configuration().css.disabled);\n this.hooks.input.setAttribute('disabled', '');\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n this.element.classList.remove(configuration().css.hidden);\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n this.element.classList.remove(configuration().css.disabled);\n this.hooks.input.removeAttribute('disabled');\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n this.element.classList.add(configuration().css.hidden);\n }),\n resetStatus: this.store.subscribe((state, action) => {\n if (action.type !== types.RESET_STATUS) return;\n\n this.element.classList.remove(configuration().css.valid);\n this.element.classList.remove(configuration().css.error);\n }),\n setError: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_ERROR) return;\n\n this.element.classList.remove(configuration().css.valid);\n this.element.classList.add(configuration().css.error);\n }),\n setValid: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_VALID) return;\n\n this.element.classList.remove(configuration().css.error);\n this.element.classList.add(configuration().css.valid);\n }),\n toggleActive: this.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_ACTIVE) return;\n\n const { active } = this.store.select('input');\n\n if (active) {\n this.element.classList.add(configuration().css.active);\n } else {\n this.element.classList.remove(configuration().css.active);\n }\n }),\n setValue: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_VALUE) return;\n\n const { active } = state.input;\n\n if (!this.config.isAlternative && !active) this.actions.toggleActive();\n\n /* Set value to the input element */\n this.hooks.input.value = action.payload;\n }),\n changeValue: this.store.subscribe((state, action) => {\n if (action.type !== types.CHANGE_VALUE) return;\n\n const { active } = state.input;\n\n if (!this.config.isAlternative && !active) this.actions.toggleActive();\n }),\n reset: this.store.subscribe((state, action) => {\n if (action.type !== types.RESET) return;\n\n this.element.classList.remove(configuration().css.disabled);\n this.hooks.input.removeAttribute('disabled');\n\n this.element.classList.remove(configuration().css.active);\n\n /* Set value to the input element */\n this.hooks.input.value = null;\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n focusIn: fromEvent(this.element, 'focusin').subscribe(() => {\n const { active, value } = this.store.select('input');\n\n if (!active && !this.config.isAlternative) this.actions.toggleActive();\n\n if (!this.config.selectionRange) return;\n\n if (isText(this.hooks.input) && value) this.hooks.input.setSelectionRange(0, value.length);\n }),\n focusOut: fromEvent(this.element, 'focusout').subscribe(() => {\n const { active, value } = this.store.select('input');\n\n if (active && !value && !this.config.isAlternative) this.actions.toggleActive();\n })\n };\n\n /**\n * Add change subscription to inputs that are not buttons\n * so we can connect to it internal store so we can grab\n * the current value.\n * In case it is a button, we are going to modify its value\n * from outside\n */\n if (!isButton(this.hooks.input)) {\n this.subscriptions = {\n ...this.subscriptions,\n change: fromEvent(this.hooks.input, 'blur').subscribe(event => {\n /* Prevent propagation */\n event.stopPropagation();\n\n /* Data */\n const data = this.hooks.input.value;\n\n /* Dispatch action */\n this.actions.changeValue(data);\n })\n };\n }\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n const { disabled, hidden, active } = this.config;\n const { value } = this.hooks.input;\n\n /* Sync store ui-state */\n this.actions.setUiState({ disabled, hidden, active });\n\n if (disabled) this.actions.disable();\n\n /* Sync value in case it has from first render */\n if (!value) return this;\n\n /* Dispatch action */\n this.actions.setValue(value);\n\n return this;\n },\n /* Init */\n init() {\n /* Set pairing */\n this.setPairing();\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Loader */\n initLoader(this);\n\n /* Start */\n this.start();\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n InputRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n active: false,\n disabled: false,\n hidden: false,\n error: false,\n valid: false,\n value: null,\n isLoading: false\n};\n\n/* Reducer */\n/* eslint-disable */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.TOGGLE_LOADING:\n return {\n ...state,\n isLoading: !state.isLoading\n };\n case types.RESET:\n return initialState;\n case types.DISABLE:\n return {\n ...state,\n disabled: true\n };\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.SET_UI_STATE:\n return {\n ...state,\n active: action.payload.active || state.active,\n hidden: action.payload.hidden || state.hidden,\n disabled: action.payload.disabled || state.disabled\n };\n case types.RESET_STATUS:\n return {\n ...state,\n error: false,\n valid: false\n };\n case types.SET_ERROR:\n return {\n ...state,\n error: true,\n valid: false\n };\n case types.SET_VALID:\n return {\n ...state,\n error: false,\n valid: true\n };\n case types.TOGGLE_ACTIVE:\n return {\n ...state,\n active: !state.active\n };\n case types.SET_VALUE:\n case types.CHANGE_VALUE:\n return {\n ...state,\n value: action.payload\n };\n case types.DESTROY:\n default:\n return state;\n }\n}\n/* eslint-enable */\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n InputRxjs > Client > Loader\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst configuration = require('../config');\nconst { actions, types } = require('../store/actions');\n\n/* Add */\nfunction addLoader(instance) {\n const { loader = false } = instance.hooks;\n\n if (loader) {\n return;\n }\n\n const template = html(`\n
\n
\n
\n `);\n\n const node = toNode(template)[0];\n\n const panel = instance;\n\n /* DOM */\n instance.element.classList.add(configuration().css.loading);\n instance.element.appendChild(node);\n\n /* Disable */\n instance.hooks.input.setAttribute('disabled', true);\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n loader: instance.element.querySelector('[data-loader]')\n };\n}\n\n/* Remove */\nfunction removeLoader(instance) {\n const { loader = false } = instance.hooks;\n\n if (!loader) {\n return;\n }\n\n const panel = instance;\n\n /* DOM */\n instance.element.removeChild(instance.hooks.loader);\n instance.element.classList.remove(configuration().css.loading);\n\n /* Enable */\n instance.hooks.input.removeAttribute('disabled');\n\n /* Hooks */\n delete panel.hooks.loader;\n}\n\n/* Init */\nfunction initLoader(instance) {\n /* Data */\n const { hasLoader } = instance.config;\n\n if (!hasLoader) {\n return;\n }\n\n const panel = instance;\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n toggleLoading: () => instance.store.dispatch(actions.toggleLoading())\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n toggleLoading: instance.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_LOADING) return;\n\n const { isLoading } = state.input;\n\n if (!isLoading) {\n /* Remove */\n removeLoader(instance);\n\n return;\n }\n\n /* Add */\n addLoader(instance);\n })\n };\n}\n\n/* Destroy */\nfunction destroyLoader(instance) {\n /* Data */\n const { hasLoader } = instance.config;\n\n if (!hasLoader) {\n return;\n }\n\n const panel = instance;\n\n /* Reactions */\n instance.reactions.toggleLoading.unsubscribe();\n delete panel.reactions.toggleLoading;\n\n /* Actions */\n delete panel.actions.toggleLoading;\n}\n\n/* Exports */\nmodule.exports = {\n initLoader,\n destroyLoader\n};\n","/* ==========================================================================\n ShareRxjs > Client > Services\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { ajax } = require('rxjs/ajax');\nconst { catchError, map } = require('rxjs/operators');\n\n/* Exports */\nmodule.exports = function Services(config = {}) {\n /* Data */\n const { endpoints, id, spc } = config;\n\n /**\n * Post email\n * @param {number} id of the product\n * @param {string} email of the receiver\n * @returns {JSON} data from the post\n */\n function postEmail(email = '') {\n /* Build url */\n const url = `${endpoints.sendMail}/${id}${spc ? `/${spc}` : ''}`;\n\n return ajax({\n url,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'\n },\n body: {\n email\n }\n }).pipe(\n map(() => {\n return of({ sent: true });\n }),\n catchError(err => {\n return of({ error: true, name: err.name, message: err.message });\n })\n );\n }\n\n return {\n postEmail\n };\n};\n","/* ==========================================================================\n ShareRxjs > Client > Tooltip\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { fromEvent } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst config = require('../config');\n\n/* Create tooltip */\nfunction createTooltip(instance) {\n /* Data */\n const { legal } = instance.config.email;\n\n /* Template */\n const template = html(`\n \n \n \n \n `);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add tootlip */\nfunction addTooltip(instance) {\n const panel = instance;\n\n /* Node */\n panel.tooltip = createTooltip(instance);\n\n /* Add to DOM */\n instance.modal.element.querySelector('[data-legal-tooltip]').appendChild(instance.tooltip);\n\n /* Update */\n panel.subscriptions.tooltipOpen = fromEvent(instance.tooltip, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n /* Create single event to handle the delete tooltip on click */\n fromEvent(window.document, 'click')\n .pipe(take(1))\n .subscribe(event => {\n event.stopPropagation();\n\n /* Dispatch action */\n instance.actions.closeLegal();\n });\n });\n\n /* Start visibility */\n setTimeout(() => instance.tooltip.classList.add(config().css.visible), 50);\n}\n\n/* Destroy tooltip */\nfunction destroyTooltip(instance) {\n const panel = instance;\n\n /* Subscription to clean */\n panel.subscriptions.tooltipDestroy = fromEvent(instance.tooltip, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n instance.subscriptions.tooltipOpen.unsubscribe();\n instance.subscriptions.tooltipDestroy.unsubscribe();\n instance.tooltip.parentNode.removeChild(instance.tooltip);\n\n delete panel.subscriptions.tooltipOpen;\n delete panel.subscriptions.tooltipDestroy;\n delete panel.tooltip;\n });\n\n /* Start visibility */\n instance.tooltip.classList.remove(config().css.visible);\n}\n\n/* Exports */\nmodule.exports = {\n addTooltip,\n destroyTooltip\n};\n","/* ==========================================================================\n Helpers > Email\n ========================================================================== */\n\n/* eslint-disable-next-line */\nconst EMAIL_REG = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n/**\n * Is email\n * @param {string} Text\n * @return {boolean} Boolean representing the validity of the email\n */\nfunction isEmail(str = '') {\n return new RegExp(EMAIL_REG).test(str);\n}\n\n/* Exports */\nmodule.exports = {\n isEmail\n};\n","/* ==========================================================================\n ShareRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\nconst { addStyle, addData, prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst ButtonTemplate = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/template');\n\nconst { sanitizeObject } = require('@bluekiri/alexandria-contrib-components/helpers/sanitize');\n\nconst configuration = require('./client/js/config');\n\n/* Email render */\nconst emailRender = (literals, context) => {\n /* Literals */\n const { shareByLabel, emailLabel } = literals;\n\n return ButtonTemplate(\n addStyle(\n addData(\n {\n icon: configuration().icon.email,\n content: emailLabel,\n title: `${shareByLabel} ${emailLabel.toLowerCase()}`\n },\n {\n type: configuration().type.emailShare\n }\n ),\n ['share-rxjs__option', 'share-rxjs__option--email']\n ),\n context\n );\n};\n\n/* Facebook render */\nconst facebookRender = (data, literals, context) => {\n /* Data */\n const { facebook } = data;\n\n /* Literals */\n const { shareByLabel, facebookLabel } = literals;\n\n /* View Helpers */\n const { icon } = ViewHelpers(context);\n\n return html(`\n \n ${icon(configuration().icon.facebook)}\n ${facebookLabel}\n \n `);\n};\n\n/* Whatsapp render */\nconst whatsappRender = (data, literals, context) => {\n /* Data */\n const { whatsapp } = data;\n\n /* Literals */\n const { shareByLabel, whatsappLabel } = literals;\n\n /* View Helpers */\n const { icon } = ViewHelpers(context);\n\n return html(`\n \n ${icon(configuration().icon.whatsapp)}\n ${whatsappLabel}\n \n `);\n};\n\n/* Twitter render */\nconst twitterRender = (data, literals, context) => {\n /* Data */\n const { twitter } = data;\n\n if (!twitter) return '';\n\n /* Literals */\n const { shareByLabel, twitterLabel } = literals;\n\n /* View Helpers */\n const { icon } = ViewHelpers(context);\n\n return html(`\n \n ${icon(configuration().icon.twitter)}\n ${twitterLabel}\n \n `);\n};\n\n/**\n * ShareRxjs template\n * @param {object} data Object containing the data model for this component.\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Template(data, context) {\n /* Data */\n const { config = {}, title = '', email = false, id = -1, spc = false } = data;\n const { styles = [], literals = {}, endpoints = {} } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* Template */\n return html(`\n
\n \n \n
\n `);\n};\n","/* ==========================================================================\n CardEndGameRxjs > Client > Aside\n ========================================================================== */\n\n/* Modules */\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst { actions, types } = require('../store/actions');\n\nconst configuration = require('../config');\n\n/* Init Aside */\nfunction initAside(instance) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n /* Services */\n // const { goToQuote } = Services(instance.config);\n\n /* Favorite btn */\n panel.quoteBtn = Button(`${selector} [data-component=\"ButtonRxjs\"][data-type=\"${configuration().type.quote}\"]`);\n\n if (!panel.quoteBtn) return;\n\n panel.hooks = {\n ...instance.hooks,\n aside: instance.element.querySelector('[data-aside]')\n };\n\n /* Update actions */\n panel.actions = {\n ...instance.actions,\n destroyButton: () => {\n return instance.store.dispatch(actions.destroyButton());\n }\n };\n\n /* Update reactions */\n panel.reactions = {\n ...instance.reactions,\n destroyButton: instance.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY_BUTTON) return;\n\n instance.quoteBtn.actions.destroy();\n\n instance.hooks.aside.classList.remove('card-request__aside--selected');\n\n instance.reactions.destroyButton.unsubscribe();\n\n delete panel.reactions.destroyButton;\n })\n };\n}\n\n/* Exports */\nmodule.exports = {\n initAside\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Tooltip > Category\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/client/js');\n\nconst TooltipTemplate = require('../../../templates/tooltip');\n\n/* Create */\nfunction createTooltip(instance, { type = 'promotions', index }) {\n /* Data */\n const { config } = instance;\n const { context } = config;\n\n /* Template */\n const template = TooltipTemplate(config[type][index], context);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Init */\nfunction initTooltip(instance, trigger) {\n /* Data */\n const panel = instance;\n\n panel.tooltip = Tooltip('[data-component=Tooltip]', { trigger });\n}\n\n/* Add */\nfunction addTooltip(instance, data, trigger) {\n /* Node */\n const node = createTooltip(instance, data);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Init */\n initTooltip(instance, trigger);\n}\n\n/* Destroy */\nfunction destroyTooltip(instance) {\n const panel = instance;\n\n /* Remove from DOM */\n instance.tooltip.element.parentNode.removeChild(instance.tooltip.element);\n delete panel.tooltip;\n}\n\n/* Exports */\nmodule.exports = {\n addTooltip,\n destroyTooltip\n};\n","/* ==========================================================================\n Tooltip > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initPopper, destroyPopper } = require('./popper');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy())\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Popper */\n destroyPopper(this);\n\n /* Unsubscribe */\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Popper */\n initPopper(this);\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n Tooltip > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n Tooltip > Client > Popper\n ========================================================================== */\n\n/* Modules */\nconst { createPopper } = require('@popperjs/core');\n\n/* Init */\nfunction initPopper(instance) {\n /* Trigger */\n const { trigger = false, placement, offset } = instance.config;\n\n if (!trigger) {\n return;\n }\n\n const panel = instance;\n\n /* Element */\n const { element } = instance;\n\n panel.popper = createPopper(trigger, element, {\n placement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset\n }\n }\n ]\n });\n}\n\n/* Destroy */\nfunction destroyPopper(instance) {\n /* Trigger */\n const { trigger = false } = instance.config;\n\n if (!trigger) {\n return;\n }\n\n const panel = instance;\n\n instance.popper.destroy();\n delete panel.popper;\n}\n\n/* Exports */\nmodule.exports = {\n initPopper,\n destroyPopper\n};\n","/* ==========================================================================\n CardRequest > Templates > Tooltip\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\nconst { addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\n/**\n * Tooltip template\n * @param {object} data\n * @param {object} context The general context object.\n */\nmodule.exports = function Template(data, context) {\n /* Literals */\n const { title = '', subtitle = '', description = false } = data;\n\n const content = html(`\n ${title}\n

${subtitle}

\n ${description ? `

${description}

` : ''}\n\n `);\n\n return Tooltip(addStyle({ content, placement: 'bottom', negative: true }, ['is-card-request-tooltip']), context);\n};\n","/* ==========================================================================\n CardRequest > Client > Price Tooltip\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/client/js');\n\nconst TooltipTemplate = require('../../../templates/price-tooltip');\n\n/* Create */\nfunction createPriceTooltip(data, instance) {\n /* Data */\n const { price = false, description = false } = data;\n\n const { config } = instance;\n const { literals, context } = config;\n\n /* Template */\n const template = TooltipTemplate({ literals, price, description }, context);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Init */\nfunction initPriceTooltip(trigger, instance) {\n /* Data */\n const panel = instance;\n\n panel.priceTooltip = Tooltip('[data-component=Tooltip]', { trigger });\n}\n\n/* Add */\nfunction addPriceTooltip(data, trigger, instance) {\n /* Node */\n const node = createPriceTooltip(data, instance);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Init */\n initPriceTooltip(trigger, instance);\n}\n\n/* Destroy */\nfunction destroyPriceTooltip(instance) {\n const panel = instance;\n\n /* Remove from DOM */\n instance.priceTooltip.element.parentNode.removeChild(instance.priceTooltip.element);\n delete panel.priceTooltip;\n}\n\n/* Exports */\nmodule.exports = {\n addPriceTooltip,\n destroyPriceTooltip\n};\n","/* ==========================================================================\n CardRequest > Templates > Price Tooltip\n ========================================================================== */\n\n/* Import modules */\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\nconst { addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst PriceFormatter = require('@bluekiri/alexandria/core/PriceFormatter');\n\n/**\n * PriceTooltip template\n * @param {object} data\n * @param {object} context The general context object.\n */\nmodule.exports = function PriceTooltipTemplate(data, context) {\n /* Literals */\n const { literals, price, description } = data;\n const { format } = PriceFormatter(context);\n const { markdown } = ViewHelpers(context);\n\n const content = `\n
\n ${\n description\n ? `\n
\n ${markdown(description)}\n
`\n : ''\n }\n ${\n price && price > 0\n ? `\n
\n ${literals.fromPriceLabel}\n
\n
\n ${format(price, context.currency.toUpperCase())}\n
`\n : ''\n }\n
`;\n\n return Tooltip(addStyle({ content, placement: 'top', negative: true }, ['is-card-request-tooltip']), context);\n};\n","/* ==========================================================================\n MainRequest > Client > CircuitContentCru\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { mergeAll } = require('rxjs/operators');\n\nconst CounterAct = require('@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/store/actions');\nconst SelectAct = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\n\nconst CircuitContentCru = require('../../../../circuit-content-cru/client/js');\nconst CircuitContentCruActions = require('../../../../circuit-content-cru/client/js/store/actions');\n\nconst {\n getFormDefault,\n getFormCrudyn\n} = require('../../../../circuit-content-cru/client/js/categories/departures/prices/items');\n\n/* Init */\nfunction initCircuitContentCru(instance) {\n const panel = instance;\n\n panel.circuitContentCru = CircuitContentCru();\n\n if (!panel.circuitContentCru) return;\n\n const { crudyn } = panel.circuitContentCru.config;\n\n if (!(panel.cardRequest.quoteBtn && panel.floatingHeader.quoteBtn)) return;\n\n panel.reactions = {\n ...instance.reactions,\n changePassangers: instance.circuitContentCru.store.subscribe((state, action) => {\n if (CircuitContentCruActions.types.CHANGE_PASSENGERS !== action.type) return;\n\n if (panel.cardRequest.quoteBtn && panel.floatingHeader.quoteBtn) {\n instance.cardRequest.actions.destroyButton();\n instance.floatingHeader.quoteBtn.actions.destroy();\n\n delete panel.cardRequest.quoteBtn;\n delete panel.floatingHeader.quoteBtn;\n }\n\n instance.reactions.changePassangers.unsubscribe();\n })\n };\n\n if (crudyn && instance.circuitContentCru.nights) {\n instance.circuitContentCru.nights.forEach((item, index) => {\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`increment-${index}`]: item.store.subscribe((state, action) => {\n if (action.type !== CounterAct.types.INCREMENT) return;\n\n if (panel.cardRequest.quoteBtn && panel.floatingHeader.quoteBtn) {\n instance.cardRequest.actions.destroyButton();\n instance.floatingHeader.quoteBtn.actions.destroy();\n\n delete panel.cardRequest.quoteBtn;\n delete panel.floatingHeader.quoteBtn;\n }\n\n instance.reactions[`increment-${index}`].unsubscribe();\n }),\n [`decrement-${index}`]: item.store.subscribe((state, action) => {\n if (action.type !== CounterAct.types.DECREMENT) return;\n\n if (panel.cardRequest.quoteBtn && panel.floatingHeader.quoteBtn) {\n instance.cardRequest.actions.destroyButton();\n instance.floatingHeader.quoteBtn.actions.destroy();\n\n delete panel.cardRequest.quoteBtn;\n delete panel.floatingHeader.quoteBtn;\n }\n\n instance.reactions[`decrement-${index}`].unsubscribe();\n })\n };\n });\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n changeOrigin: instance.circuitContentCru.origin.store.subscribe((state, action) => {\n if (action.type !== SelectAct.types.SELECT_OPTION) return;\n\n if (panel.cardRequest.quoteBtn && panel.floatingHeader.quoteBtn) {\n instance.cardRequest.actions.destroyButton();\n instance.floatingHeader.quoteBtn.actions.destroy();\n\n delete panel.cardRequest.quoteBtn;\n delete panel.floatingHeader.quoteBtn;\n }\n\n instance.reactions.changeOrigin.unsubscribe();\n })\n };\n }\n\n panel.subscriptions = {\n ...instance.subscriptions,\n clickQuote: of(panel.cardRequest.quoteBtn.events.click$, panel.floatingHeader.quoteBtn.events.click$)\n .pipe(mergeAll())\n .subscribe(() => {\n const { categoriesPrices } = instance.circuitContentCru.config;\n const { departureDate, categoryCode } = categoriesPrices;\n\n /* Check if is crudyn */\n if (crudyn) {\n getFormCrudyn({ departureDate }, instance.circuitContentCru);\n return;\n }\n\n /* Send default cru */\n getFormDefault({ departureDate, categoryCode }, instance.circuitContentCru);\n })\n };\n}\n\n/* Exports */\nmodule.exports = {\n initCircuitContentCru\n};\n","/* ==========================================================================\n CircuitContentCru > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * CircuitContentCru component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CircuitContentCru(selector = '[data-component=CircuitContentCru]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n modalBanners: instance.element.querySelectorAll(`[data-banner]`),\n fee: instance.element.querySelector('[data-fee]'),\n title: instance.element.querySelector('[data-title]')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\nconst { markdown, formatPrice } = require('@bluekiri/alexandria/core/ViewHelpers')();\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\nconst { tooltipReducer } = require('./store/reducer-tooltip');\nconst { validations } = require('./store/validations');\n\nconst { initCategories, destroyCategories } = require('./categories');\nconst { initPassengers, destroyPassengers } = require('./passengers');\nconst { initModal } = require('./modal');\nconst { expandAndActive } = require('./categories/departures/prices/groups/utils');\nconst { addTooltip, destroyTooltip } = require('./tooltip');\nconst { TOOLTIP_FEES } = require('../../constants/tooltip');\nconst { initContact, destroyContact } = require('./contact');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer,\n tooltip: tooltipReducer,\n validations\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n },\n closeModal: () => {\n return this.store.dispatch(actions.closeModal());\n },\n openModal: index => {\n return this.store.dispatch(actions.openModal(index));\n },\n openTooltip: payload => {\n return this.store.dispatch(actions.openTooltip(payload));\n },\n closeTooltip: () => {\n return this.store.dispatch(actions.closeTooltip());\n },\n watchFee: payload => {\n return this.store.dispatch(actions.watchFee(payload));\n },\n unwatchFee: () => {\n return this.store.dispatch(actions.unwatchFee());\n },\n validateCheckboxes: payload => {\n return this.store.dispatch(actions.validateCheckboxes(payload));\n },\n saveCheckbox: payload => {\n return this.store.dispatch(actions.saveCheckbox(payload));\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Contact */\n if (this.config.requestCustomerData) {\n destroyContact(this);\n }\n\n /* Categories */\n destroyCategories(this);\n\n /* Passengers */\n destroyPassengers(this);\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n watchFee: this.store.subscribe((state, action) => {\n if (action.type !== types.WATCH_FEE) return;\n\n const content = `
\n
\n ${this.config.categoriesPrices.fee.content.title\n .map(item => {\n const out = item.value\n ? markdown(item.content).replace(\n '#value#',\n formatPrice(\n item.value,\n this.config.context.currency.toUpperCase()\n )\n )\n : markdown(item.content);\n return `

${out}

`;\n })\n .join('')}\n
\n
\n ${markdown(this.config.categoriesPrices.fee.content.subtitle)}\n
\n \n
`;\n // Closing any opened tooltip\n if (this.tooltip) {\n this.actions.closeTooltip();\n }\n // Initializing a new tooltip\n addTooltip(this, { type: TOOLTIP_FEES, content }, action.payload.trigger);\n\n // Opening tooltip\n this.actions.openTooltip();\n }),\n unwatchFee: this.store.subscribe((state, action) => {\n if (action.type !== types.UNWATCH_FEE) return;\n\n destroyTooltip(this, { type: TOOLTIP_FEES });\n }),\n saveCheckbox: this.store.subscribe((state, action) => {\n if (action.type !== types.SAVE_CHECKBOX) return;\n\n /* Check if the checkboxes matches state with model */\n const { checkboxes } = this.config.requestCustomerData;\n\n const checkedsAndRequireds = checkboxes.map(item => {\n if (item.required) {\n return state.validations.checks[item.name];\n }\n\n return true;\n });\n\n if (checkedsAndRequireds.every(item => item)) this.actions.validateCheckboxes(true);\n else this.actions.validateCheckboxes(false);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n watchFee: this.hooks.fee\n ? fromEvent(this.hooks.fee, 'mouseenter').subscribe(() => {\n if (this.config.categoriesPrices.fee) {\n this.actions.watchFee({ trigger: this.hooks.fee });\n }\n })\n : false,\n unwatchFee: this.hooks.fee\n ? fromEvent(this.hooks.fee, 'mouseout').subscribe(() => {\n this.actions.unwatchFee();\n })\n : false\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n expandAndActive(this);\n\n if (this.config.requestCustomerData && this.config.requestCustomerData.checkboxes) {\n this.config.requestCustomerData.checkboxes.forEach(item =>\n this.actions.saveCheckbox({ [item.name]: item.checked || false })\n );\n }\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Contact */\n initContact(this);\n\n /* Passengers */\n initPassengers(this);\n\n /* Categories */\n initCategories(this);\n\n /* Modal */\n initModal(this);\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n CircuitContentCru > Client > Store > Reducer\n ========================================================================== */\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n rooms: 0,\n baseIndexRooms: 0,\n origin: null,\n resident: false,\n nights: [],\n informations: [{}],\n datePriceMin: null,\n groupExpanded: null,\n categoriesPrices: null,\n modalOpen: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.ADD_ROOM:\n return {\n ...state,\n rooms: state.rooms + 1,\n baseIndexRooms: state.baseIndexRooms + 1,\n informations: [...state.informations, {}],\n isMulticabin: state.rooms > 0\n };\n case types.DELETE_ROOM:\n return {\n ...state,\n rooms: state.rooms - 1,\n informations: state.informations.map((item, index) => (index === action.payload ? undefined : item)),\n isMulticabin: state.rooms <= 0\n };\n case types.SET_ROOMS:\n return {\n ...state,\n rooms: action.payload,\n informations: [...Array(action.payload)].map(() => ({}))\n };\n case types.SET_ORIGIN:\n return {\n ...state,\n origin: action.payload\n };\n case types.SET_RESIDENT:\n return {\n ...state,\n resident: action.payload\n };\n case types.SET_NIGHTS:\n return {\n ...state,\n nights: {\n ...state.nights,\n [action.payload.index]: {\n value: action.payload.value,\n id: action.payload.id || state.nights[action.payload.index].id\n }\n }\n };\n case types.SET_INFORMATION:\n return {\n ...state,\n informations: state.informations.map((item, index) => {\n if (index !== action.payload.index) {\n return item;\n }\n\n return {\n ...item,\n ...action.payload.information\n };\n })\n };\n case types.CHANGE_PASSENGERS:\n return {\n ...state,\n groupExpanded: null,\n informations: state.informations.map((item, index) => {\n if (index !== action.payload.index) {\n return {\n ...item\n };\n }\n\n return {\n ...item,\n passengers: action.payload.passengers,\n ages: [...Array(action.payload.passengers)]\n .map((jtem, jndex) => {\n if (+item.ages[jndex] === 0) return 0;\n if (item.ages && !item.ages[jndex]) return 35;\n\n return item.ages[jndex];\n })\n .slice(0, action.payload.passengers)\n };\n })\n };\n case types.SELECT_DATE_PRICE_MIN:\n return {\n ...state,\n datePriceMin: action.payload.date,\n catGroupMin: action.payload.catGroup\n };\n case types.COLLAPSE_GROUP:\n return {\n ...state,\n groupExpanded: null\n };\n case types.EXPAND_GROUP:\n return {\n ...state,\n groupExpanded: action.payload\n };\n case types.SET_CATEGORIES_PRICES:\n return {\n ...state,\n categoriesPrices: action.payload\n };\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Store > Reducer Tooltip\n ========================================================================== */\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n tooltip: false,\n tooltipClicked: false\n};\n\n/* Reducer */\nfunction tooltipReducer(state = initialState, action) {\n switch (action.type) {\n case types.TOGGLE_TOOLTIP_CLICKED:\n return {\n ...state,\n tooltipClicked: action.payload\n };\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n tooltipReducer\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Store > Validations\n ========================================================================== */\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n areCheckboxesValid: false,\n checks: {},\n contactData: {\n name: '',\n surname: '',\n phone: '',\n email: ''\n }\n};\n\n/* Reducer */\nfunction validations(state = initialState, action) {\n switch (action.type) {\n case types.SET_CONTACT:\n return {\n ...state,\n contactData: {\n ...state.contactData,\n ...action.payload\n }\n };\n case types.VALIDATE_CHECKBOXES:\n return {\n ...state,\n areCheckboxesValid: action.payload\n };\n case types.SAVE_CHECKBOX:\n return {\n ...state,\n checks: { ...state.checks, ...action.payload }\n };\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n validations\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { actions } = require('../../store/actions');\n\nconst { initGroups, destroyGroups } = require('./groups');\nconst { initPrices, destroyPrices } = require('./prices');\n\nconst Departures = require('../../../../templates/categories/departures');\n\n/* Create */\nfunction createDeparatures(instance) {\n /* Data */\n const panel = instance;\n const { literals, context, crudyn, multicabin } = instance.config;\n const { categoriesPrices, rooms } = instance.store.select('data');\n\n const isMulticabin = multicabin && rooms && rooms > 1;\n\n if (multicabin) {\n panel.hooks.title.innerText = categoriesPrices.title;\n }\n\n /* Template */\n const template = Departures({ crudyn, isMulticabin, categoriesPrices }, literals, context);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add */\nfunction addDepartures(instance) {\n /* Node */\n const node = createDeparatures(instance);\n\n /* Add to DOM */\n instance.element.querySelector('[data-departures-hook]').appendChild(node);\n\n /* Init */\n initDepartures(instance);\n}\n\n/* Init */\nfunction initDepartures(instance) {\n const panel = instance;\n\n /* Hooks */\n const { categories } = instance.hooks;\n\n panel.hooks = {\n ...instance.hooks,\n departures: categories.querySelector('[data-departures]'),\n year: categories.querySelector('[data-year-sticky]')\n };\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n collapseGroup: payload => {\n return instance.store.dispatch(actions.collapseGroup(payload));\n },\n expandGroup: payload => {\n return instance.store.dispatch(actions.expandGroup(payload));\n }\n };\n\n /* Groups */\n initGroups(instance);\n\n /* Prices */\n initPrices(instance);\n}\n\n/* Destroy */\nfunction destroyDepartures(instance) {\n const panel = instance;\n\n /* Groups */\n destroyGroups(instance);\n\n /* Prices */\n destroyPrices(instance);\n\n /* Actions */\n delete panel.actions.collapseGroup;\n delete panel.actions.expandGroup;\n\n /* Delete from DOM */\n const { departures } = instance.hooks;\n\n departures.parentNode.removeChild(departures);\n\n /* Hooks */\n delete panel.hooks.departures;\n}\n\n/* Exports */\nmodule.exports = {\n addDepartures,\n initDepartures,\n destroyDepartures\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Groups\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { filter, map, tap } = require('rxjs/operators');\n\nconst { types } = require('../../../store/actions');\n\nconst { addTooltip, destroyTooltip } = require('../../../tooltip');\n\nconst { collapse, expand } = require('./collapse');\n\nconst { TOOLTIP_CATEGORY } = require('../../../../../constants/tooltip');\n\n/* Init */\nfunction initGroups(instance) {\n /* Data */\n const { crudyn, isMulticabin } = instance.config;\n\n /**\n * We do not want to init when we are in type crudyn\n * or we are in type multicabin, since we only have\n * just one price to show\n */\n\n if (crudyn || isMulticabin) {\n return;\n }\n\n const panel = instance;\n\n /* Hooks */\n const { departures } = instance.hooks;\n const groups = departures.querySelector('[data-groups]');\n\n panel.hooks = {\n ...instance.hooks,\n groups\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n collapseGroupFromGroups: instance.store.subscribe((state, action) => {\n if (action.type !== types.COLLAPSE_GROUP) return;\n\n /* Hooks */\n const { groups: groupsEl } = instance.hooks;\n\n /* Element */\n const element = groupsEl.querySelector(`[data-group='${action.payload}']`);\n\n /* Collapse */\n collapse(instance, element);\n }),\n expandGroupFromGroups: instance.store.subscribe((state, action) => {\n if (action.type !== types.EXPAND_GROUP) return;\n\n /* Hooks */\n const { groups: groupsEl } = instance.hooks;\n\n /* Element */\n const element = groupsEl.querySelector(`[data-group='${action.payload}']`);\n\n /* Expand */\n expand(instance, element);\n })\n };\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n groupsMouseover: fromEvent(groups, 'mouseover')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => !instance.tooltip),\n map(event => event.target.closest('[data-item]')),\n filter(element => element !== null)\n )\n .subscribe(el => {\n /* Data */\n const { item } = el.dataset;\n const { category: categories } = instance.store.select('data').categoriesPrices;\n\n const category = categories.filter(({ id }) => id === +item)[0];\n\n /* Add Tooltip */\n addTooltip(instance, { type: TOOLTIP_CATEGORY, category }, el);\n }),\n groupsMouseout: fromEvent(groups, 'mouseout')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => instance.tooltip),\n map(event => event.target.closest('[data-item]')),\n filter(element => element !== null)\n )\n .subscribe(() => {\n /* Destroy Tooltip */\n destroyTooltip(instance, { type: TOOLTIP_CATEGORY });\n }),\n groupsClick: fromEvent(groups, 'click')\n .pipe(\n tap(event => event.stopPropagation()),\n map(event => event.target.closest('[data-header]')),\n filter(element => element !== null)\n )\n .subscribe(element => {\n /* Data */\n const { header } = element.dataset;\n const { groupExpanded } = instance.store.select('data');\n\n /* Expand */\n if (!(+header === groupExpanded)) {\n if (groupExpanded) {\n /* Collapse older expanded */\n //\n /* Dispatch */\n instance.actions.collapseGroup(groupExpanded);\n }\n\n /* Dispatch */\n instance.actions.expandGroup(+header);\n\n return;\n }\n\n /* Collapse */\n /* Dispatch */\n instance.actions.collapseGroup(+header);\n })\n };\n}\n\n/* Handle destroy */\nfunction handleDestroy(instance) {\n const panel = instance;\n\n /* Reactions */\n instance.reactions.collapseGroupFromGroups.unsubscribe();\n delete panel.reactions.collapseGroupFromGroups;\n\n instance.reactions.expandGroupFromGroups.unsubscribe();\n delete panel.reactions.expandGroupFromGroups;\n\n /* Subscriptions */\n instance.subscriptions.groupsMouseover.unsubscribe();\n delete panel.subscriptions.groupsMouseover;\n\n instance.subscriptions.groupsMouseout.unsubscribe();\n delete panel.subscriptions.groupsMouseout;\n\n instance.subscriptions.groupsClick.unsubscribe();\n delete panel.subscriptions.groupsClick;\n\n /* Delete from DOM */\n const { groups } = instance.hooks;\n\n groups.parentNode.removeChild(groups);\n\n /* Hooks */\n delete panel.hooks.groups;\n}\n\n/* Destroy */\nfunction destroyGroups(instance) {\n /* Data */\n const { crudyn, isMulticabin } = instance.config;\n\n /**\n * We do not want to destroy when we are in type crudyn\n * or we are in type multicabin, since we only have\n * just one price to show\n */\n if (crudyn || isMulticabin) {\n return;\n }\n\n /* Handle */\n handleDestroy(instance);\n}\n\n/* Exports */\nmodule.exports = {\n initGroups,\n destroyGroups\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Tooltip > Category\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/template');\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\n\nconst { TOOLTIP_IMAGE_HEIGHT, TOOLTIP_IMAGE_WIDTH } = require('../../../constants/tooltip');\n\nconst configuration = require('../../../client/js/config');\n\n/* Has advantages */\nconst hasAdvantages = advantages => advantages.length > 0;\n\n/* Render image */\nconst renderImage = (image, context) => {\n return Image(\n addData(\n {\n ...image,\n resize: {\n height: TOOLTIP_IMAGE_HEIGHT,\n width: TOOLTIP_IMAGE_WIDTH\n },\n alternative: configuration().imgAlternative\n },\n {\n type: configuration().type.tooltip\n }\n ),\n context\n );\n};\n\n/* Render advantage */\nconst renderAdvantage = advantage => {\n /* Data */\n const { icon = '', title = '', description = '' } = advantage;\n\n return html(`\n
\n
${icon}
\n
\n

${title}

\n

${description}

\n
\n
\n `);\n};\n\n/* Render advantages */\nconst renderAdvantages = (advantages, literals, context) => {\n if (advantages.length < 1) {\n return html('');\n }\n\n /* Literals */\n const { advantagesLabel = '' } = literals;\n\n /* View Helpers */\n const { icon } = ViewHelpers(context);\n\n return html(`\n
\n

${advantagesLabel}

\n ${html(advantages.map(advantage => renderAdvantage({ ...advantage, icon: icon(advantage.icon) }, context)))}\n
\n `);\n};\n\n/* Render star */\nconst renderStar = context => {\n /* View helpers */\n const { icon } = ViewHelpers(context);\n\n return html(`\n
\n ${icon('star-filled')}\n ${icon('star-filled')}\n
\n `);\n};\n\n/**\n * Category template\n * @param {object} data\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Category(data, literals, context) {\n /* Data */\n const {\n name = '',\n highlight = false,\n image = {},\n occupation = '',\n decks = false,\n description = '',\n advantages = []\n } = data;\n\n /* Literals */\n const { occupationLabel = '', decksLabel = '' } = literals;\n\n const content = html(`\n
\n
\n ${renderImage(image, context)}\n ${hasAdvantages(advantages) ? renderStar(context) : ''}\n
\n

${name}

\n

${occupationLabel}: ${occupation}

\n ${decks ? `

${decksLabel}: ${decks}

` : ''}\n

${description}

\n
\n ${renderAdvantages(advantages, literals, context)}\n `);\n\n return Tooltip(\n addStyle(\n addData(\n {\n content,\n placement: highlight ? 'bottom' : 'right'\n },\n { type: configuration().type.tooltip }\n ),\n ['is-category', hasAdvantages(advantages) ? 'has-advantages' : '', highlight ? 'is-highlight' : '']\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Tooltip > Departure Date\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { markdown } = require('@bluekiri/alexandria/core/ViewHelpers')();\n\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\n\nconst { addStyle, addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('../../../client/js/config');\n\n/**\n * DepartureDate template\n * @param {object} data\n * @param {object} context The general context object.\n */\nmodule.exports = function DepartureDate(data, literals, context) {\n /* Data */\n const { description = '', returnDateDescription = '', hasFlights = false } = data;\n\n /* Literals */\n const { departureDateLabel = '', returnDateLabel = '', hasFlightsLabel = '' } = literals;\n\n const content = html(`\n

\n ${departureDateLabel}: \n ${description}\n

\n ${\n returnDateDescription\n ? `\n

\n ${returnDateLabel}: \n ${returnDateDescription}\n

\n `\n : ''\n }\n ${hasFlights ? `

${markdown(hasFlightsLabel)}

` : ''}\n `);\n\n return Tooltip(\n addStyle(addData({ content, placement: 'bottom', negative: true }, { type: configuration().type.tooltip }), [\n 'is-departure-date'\n ]),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Tooltip > Advantage\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { addStyle, addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst { icon } = require('@bluekiri/alexandria/core/ViewHelpers')();\n\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\n\nconst { ICON_CHECK } = require('../../../constants/icons');\n\nconst configuration = require('../../../client/js/config');\n\n/**\n * Advantage template\n * @param {object} data\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Advantage(data, context) {\n if (!data) {\n return html('');\n }\n\n const content = html(`\n
\n

${data.title}

\n ${data.content ? `

${data.content}

` : ''}\n ${\n data.contents && data.contents.length\n ? `\n `\n : ''\n }\n
\n `);\n\n return Tooltip(\n addStyle(addData({ content, placement: 'bottom' }, { type: configuration().type.tooltip }), ['is-advantage']),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Tooltip > Departure Date\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { markdown, icon } = require('@bluekiri/alexandria/core/ViewHelpers')();\n\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\n\nconst { addStyle, addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('../../../client/js/config');\n\n/**\n * JustMarried template\n * @param {object} data\n * @param {object} context The general context object.\n */\nmodule.exports = function JustMarried(literals, context) {\n /* Literals */\n const { justMarriedDescriptionLabel = '' } = literals;\n\n const content = html(`\n

${markdown(justMarriedDescriptionLabel)}

\n ${icon('cancel')}\n `);\n\n return Tooltip(\n addStyle(addData({ content, placement: 'bottom', negative: true }, { type: configuration().type.tooltip }), [\n 'is-just-married'\n ]),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Tooltip > Offer\n ========================================================================== */\n\n/* Import modules */\nconst { markdown } = require('@bluekiri/alexandria/core/ViewHelpers')();\n\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\n\nconst { addStyle, addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('../../../client/js/config');\n\n/**\n * Offer template\n * @param {object} data\n * @param {object} context The general context object.\n */\nmodule.exports = function Offer({ offerDescription = '' }, context) {\n return Tooltip(\n addStyle(\n addData(\n {\n content: `\n

\n ${markdown(offerDescription)}\n

\n `,\n placement: 'bottom',\n negative: true\n },\n { type: configuration().type.tooltip }\n ),\n ['is-offer']\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Tooltip > Fees\n ========================================================================== */\n\n/* Import modules */\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\n\nconst { addStyle, addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('../../../client/js/config');\n\n/**\n * Fees template\n * @param {object} data\n * @param {object} context The general context object.\n */\nmodule.exports = function Fees({ content }, context) {\n return Tooltip(\n addStyle(\n addData(\n {\n content,\n placement: 'top',\n negative: true\n },\n { type: configuration().type.tooltip }\n ),\n ['is-fees']\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Tooltip > Contact\n ========================================================================== */\n\n/* Import modules */\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\n\nconst { addStyle, addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('../../../client/js/config');\n/**\n * Contact template\n * @param {object} data\n * @param {object} context The general context object.\n */\nmodule.exports = function Contact({ content }, context) {\n return Tooltip(\n addStyle(\n addData(\n {\n content,\n placement: 'bottom',\n negative: false\n },\n { type: configuration().type.tooltipClicked }\n ),\n ['is-contact']\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Groups > Groups > Collapse\n ========================================================================== */\n\n/* Modules */\nconst { ICON_MINUS, ICON_PLUS } = require('../../../../../../constants/icons');\n\nconst configuration = require('../../../../config');\n\n/* Collapse */\nfunction collapse(instance, element) {\n /* Icon */\n const icon = element.querySelector('[data-icon] i');\n\n icon.className = icon.className.replace(ICON_MINUS, ICON_PLUS);\n\n /* Collapse */\n element.classList.remove(configuration().css.isExpanded);\n}\n\n/* Expand */\nfunction expand(instance, element) {\n /* Icon */\n const icon = element.querySelector('[data-icon] i');\n\n icon.className = icon.className.replace(ICON_PLUS, ICON_MINUS);\n\n /* Expand */\n element.classList.add(configuration().css.isExpanded);\n}\n\n/* Exports */\nmodule.exports = {\n collapse,\n expand\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Prices\n ========================================================================== */\n\n/* Modules */\nconst { initCarousel, destroyCarousel } = require('./carousel');\nconst { initDates, destroyDates } = require('./dates');\nconst { initGroups, destroyGroups } = require('./groups');\nconst { initItems, destroyItems } = require('./items');\n\n/* Init */\nfunction initPrices(instance) {\n const panel = instance;\n\n /* Hooks */\n const { departures } = instance.hooks;\n\n panel.hooks = {\n ...instance.hooks,\n prices: departures.querySelector('[data-prices]')\n };\n\n /* Carousel */\n initCarousel(instance);\n\n /* Dates */\n initDates(instance);\n\n /* Items */\n initItems(instance);\n\n /* Groups */\n initGroups(instance);\n}\n\n/* Destroy */\nfunction destroyPrices(instance) {\n const panel = instance;\n\n /* Carousel */\n destroyCarousel(instance);\n\n /* Dates */\n destroyDates(instance);\n\n /* Items */\n destroyItems(instance);\n\n /* Groups */\n destroyGroups(instance);\n\n /* Hooks */\n delete panel.hooks.prices;\n}\n\n/* Exports */\nmodule.exports = {\n initPrices,\n destroyPrices\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Prices > Carousel\n ========================================================================== */\n\n/* Modules */\nconst Carousel = require('@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js');\n\nconst { types } = require('../../../../store/actions');\n\nconst { initYear, destroyYear } = require('./year');\nconst { setActive, unsetActive } = require('../groups/utils');\n\nconst configuration = require('../../../../config');\n\n/* Init */\nfunction initCarousel(instance) {\n const panel = instance;\n\n const { selector, store, config } = instance;\n const { departures } = store.select('data').categoriesPrices || config.categoriesPrices;\n\n /* Reference */\n panel.departures = Carousel(\n `${selector} [data-departures] [data-component='CarouselRxjs'][data-type='${configuration().type.departures}']`,\n {\n hasBreakpoints: true,\n swiper: {\n init: false,\n slidesPerView: departures.length > 9 ? 9 : departures.length,\n slidesPerGroup: 9,\n spaceBetween: 0,\n breakpoints: {\n 1200: {\n slidesPerView: departures.length > 5 ? 5 : departures.length,\n slidesPerGroup: 5\n },\n 1023: {\n slidesPerView: departures.length > 3 ? 3 : departures.length,\n slidesPerGroup: 3\n }\n }\n }\n }\n );\n\n /* Year */\n initYear(instance);\n\n /**\n * Init now the carousel since we had to bind some events\n * to the swiper instance to the year sticky functionality\n */\n instance.departures.swiper.init();\n\n /* Reactions */\n\n /**\n * We have to connect the carousel to the min prices bars, so we scroll to the\n * slide containing that departure with the min price clicked in the bar\n */\n panel.reactions = {\n ...instance.reactions,\n selectDatePriceMin: instance.store.subscribe((state, action) => {\n if (action.type !== types.SELECT_DATE_PRICE_MIN) return;\n /* Reference */\n const { crudyn } = instance.config;\n const { isMulticabin } = instance.store.select('data');\n const { element, swiper } = instance.departures;\n const departuresEls = [...element.querySelectorAll('[data-departure]')];\n const departureEl = departuresEls.filter(item => item.dataset.departure === action.payload.date)[0];\n\n const groupEl = departureEl.querySelector(`[data-group='${+action.payload.catGroup}']`);\n\n /* Action to check collapsed groupe and active departure */\n const checkActive = () => {\n /* Select Active price */\n const { groupExpanded } = instance.store.select('data');\n const groupElExpanded = departureEl.querySelector(`[data-group='${+groupExpanded}']`);\n\n if (groupElExpanded) {\n /* Dispatch */\n if (!(+action.payload.catGroup === groupExpanded)) instance.actions.collapseGroup(+groupExpanded);\n\n unsetActive(instance, groupElExpanded);\n }\n\n /* Expand */\n if (!(+action.payload.catGroup === groupExpanded)) {\n /* Dispatch */\n instance.actions.expandGroup(+action.payload.catGroup);\n\n /* Set active */\n setActive(instance, groupEl);\n\n return;\n }\n\n /* Check same groupe */\n if (+action.payload.catGroup === groupExpanded) {\n /* Unset active */\n const { groupActive } = instance.hooks;\n\n unsetActive(instance, groupActive);\n\n /* Set active */\n setActive(instance, groupEl);\n }\n };\n\n /* Check active */\n if (groupEl) checkActive();\n\n /* Navigate to the slide */\n swiper.slideTo(departuresEls.indexOf(departureEl));\n\n if (crudyn || isMulticabin) {\n departuresEls.map(item => item.querySelector('[data-item]').classList.remove('is-active'));\n departureEl.querySelector('[data-item]').classList.add('is-active');\n }\n })\n };\n}\n\n/* Destroy */\nfunction destroyCarousel(instance) {\n const panel = instance;\n\n /* Reactions */\n instance.reactions.selectDatePriceMin.unsubscribe();\n delete panel.reactions.selectDatePriceMin;\n\n /* Year */\n destroyYear(instance);\n\n /* Reference */\n instance.departures.actions.destroy();\n delete panel.departures;\n}\n\n/* Exports */\nmodule.exports = {\n initCarousel,\n destroyCarousel\n};\n","/* ==========================================================================\n CarouselRxjs > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst Swiper = require('swiper/dist/js/swiper');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { resizeWindow } = require('../../../../events/resize');\n\nconst vendorConfig = require('./vendor/config');\n\nconst carousel = {\n /* Setup swiper */\n setupSwiper() {\n if (this.swiper) return this;\n\n /* Config */\n const { swiper = {}, hasAutoplay, hasBreakpoints, hasNavigation, hasPagination } = this.config;\n\n if (hasNavigation) {\n this.element.parentNode\n .querySelectorAll('.carousel-rxjs__navigation')\n .forEach(item => item.classList.add(this.id));\n }\n\n if (hasPagination) {\n this.element.parentNode.querySelector('.carousel-rxjs__pagination').classList.add(this.id);\n }\n\n /* Create 3rd party library swiper instance */\n this.swiper = new Swiper(this.hooks.swiper, {\n ...vendorConfig({ hasAutoplay, hasBreakpoints, hasNavigation, hasPagination, id: this.id }),\n ...swiper\n });\n\n return this;\n },\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n carousel: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide())\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Destroy swiper */\n this.swiper.destroy();\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n /* Data */\n const { css } = this.config;\n\n this.element.classList.remove(css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n /* Data */\n const { css } = this.config;\n\n this.element.classList.add(css.hidden);\n })\n };\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n const { autoResize = true } = this.config;\n\n if (!autoResize) {\n return this;\n }\n\n /* Resize */\n resizeWindow(250);\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup swiper */\n this.setupSwiper();\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n return this;\n }\n};\n\nmodule.exports = carousel;\n","/* ==========================================================================\n CarouselRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n hidden: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CarouselRxjs > Vendor > Config\n ========================================================================== */\n\nconst config = {\n init: true,\n slidesPerView: 6,\n slidesPerGroup: 6,\n spaceBetween: 20,\n speed: 900,\n containerModifierClass: 'carousel-rxjs--',\n slideClass: 'carousel-rxjs__slide',\n slideActiveClass: 'carousel-rxjs__slide--active',\n slideVisibleClass: 'carousel-rxjs__slide--visible',\n slideNextClass: 'carousel-rxjs__slide--next',\n slidePrevClass: 'carousel-rxjs__slide--prev',\n wrapperClass: 'carousel-rxjs__wrapper'\n};\n\n/* Breakpoints config */\nconst breakpoints = {\n // when window width is <= 480px\n 480: {\n slidesPerView: 1,\n slidesPerGroup: 1\n },\n // when window width is <= 720px\n 720: {\n slidesPerView: 2,\n slidesPerGroup: 2\n },\n // when window width is <= 1200px\n 1200: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n // when window width is <= 1600px\n 1600: {\n slidesPerView: 4,\n slidesPerGroup: 4\n }\n};\n\n/* Navigation config */\nconst navigation = id => ({\n nextEl: `.carousel-rxjs__navigation--next.${id}`,\n prevEl: `.carousel-rxjs__navigation--prev.${id}`,\n hiddenClass: 'carousel-rxjs__navigation--hidden',\n disabledClass: 'carousel-rxjs__navigation--disabled'\n});\n\n/* Pagination config */\nconst pagination = id => ({\n el: `.carousel-rxjs__pagination.${id}`,\n modifierClass: 'carousel-rxjs__pagination--',\n currentClass: 'carousel-rxjs__pagination--current',\n totalClass: 'carousel-rxjs__pagination--total',\n hiddenClass: 'carousel-rxjs__pagination--hidden',\n bulletClass: 'carousel-rxjs__bullet',\n bulletActiveClass: 'carousel-rxjs__bullet--active',\n clickable: true,\n clickableClass: 'carousel-rxjs__pagination--clickable'\n});\n\n/* Autoplay config */\nconst autoplay = {\n delay: 7000\n};\n\nmodule.exports = ({ hasBreakpoints, hasNavigation, hasPagination, hasAutoplay, id }) => ({\n ...config,\n breakpoints: hasBreakpoints ? breakpoints : false,\n navigation: hasNavigation ? navigation(id) : false,\n pagination: hasPagination ? pagination(id) : false,\n autoplay: hasAutoplay ? autoplay : false\n});\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Prices > Carousel > Year\n ========================================================================== */\n\n/* Modules */\nconst configuration = require('../../../../../config');\n\n/* Update year */\nfunction updateYear(instance) {\n /* Reference */\n const { swiper } = instance.departures;\n const { activeIndex, slides } = swiper;\n const { year } = instance.hooks;\n\n /* Data */\n const { departure } = slides[activeIndex].querySelector('[data-departure]').dataset;\n const yearDeparture = new Date(departure).getFullYear();\n const yearCurrent = new Date().getFullYear();\n\n /* Update year visible and value */\n if (!(yearDeparture > yearCurrent)) {\n /* Hide */\n setTimeout(() => {\n year.classList.remove(configuration().css.isVisible);\n }, 50);\n\n return;\n }\n\n /* Visible */\n setTimeout(() => {\n /* Update value */\n year.innerText = yearDeparture;\n\n /* Visibility */\n if (year.classList.contains(configuration().css.isVisible)) {\n return;\n }\n\n year.classList.add(configuration().css.isVisible);\n }, 50);\n}\n\n/* Init */\nfunction initYear(instance) {\n /* Reference */\n const { swiper } = instance.departures;\n\n /* Events */\n swiper.on('init', () => {\n updateYear(instance);\n });\n\n swiper.on('transitionEnd', () => {\n updateYear(instance);\n });\n}\n\n/* Destroy */\nfunction destroyYear(instance) {\n /* Reference */\n const { swiper } = instance.departures;\n\n /* Events */\n swiper.off('init');\n swiper.off('transitionEnd');\n}\n\n/* Exports */\nmodule.exports = {\n initYear,\n destroyYear\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Prices > Dates\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { map, filter, tap } = require('rxjs/operators');\n\nconst { addTooltip, destroyTooltip } = require('../../../../tooltip');\n\nconst { TOOLTIP_DEPARTURE_DATE } = require('../../../../../../constants/tooltip');\n\n/* Init */\nfunction initDates(instance) {\n const panel = instance;\n\n /* Hooks */\n const { prices } = instance.hooks;\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n datesMouseover: fromEvent(prices, 'mouseover')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => !instance.tooltip),\n map(event => event.target.closest('[data-date]')),\n filter(element => element !== null)\n )\n .subscribe(el => {\n /* Data */\n const { date } = el.dataset;\n const { departures } = instance.store.select('data').categoriesPrices;\n\n const departure = departures.filter(({ id }) => id === date)[0];\n\n /* Add Tooltip */\n addTooltip(instance, { type: TOOLTIP_DEPARTURE_DATE, departure }, el);\n }),\n datesMouseout: fromEvent(prices, 'mouseout')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => instance.tooltip),\n map(event => event.target.closest('[data-date]')),\n filter(element => element !== null)\n )\n .subscribe(() => {\n /* Destroy Tooltip */\n destroyTooltip(instance, { type: TOOLTIP_DEPARTURE_DATE });\n })\n };\n}\n\n/* Destroy */\nfunction destroyDates(instance) {\n const panel = instance;\n\n /* Subscriptions */\n instance.subscriptions.datesMouseover.unsubscribe();\n delete panel.subscriptions.datesMouseover;\n\n instance.subscriptions.datesMouseout.unsubscribe();\n delete panel.subscriptions.datesMouseout;\n}\n\n/* Exports */\nmodule.exports = {\n initDates,\n destroyDates\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Prices > Groups\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { filter, map, tap } = require('rxjs/operators');\n\nconst { types } = require('../../../../store/actions');\n\nconst { addTooltip, destroyTooltip } = require('../../../../tooltip');\n\nconst { collapse, expand } = require('./collapse');\n\nconst { TOOLTIP_HIGHLIGHT } = require('../../../../../../constants/tooltip');\n\nconst { setActive, unsetActive } = require('./utils');\n\n/* Init */\nfunction initGroups(instance) {\n /* Data */\n const { crudyn, isMulticabin } = instance.config;\n\n /**\n * We do not want to init when we are in type crudyn\n * or we are in type multicabin, since we only have\n * just one price to show\n */\n\n if (crudyn || isMulticabin) {\n return;\n }\n\n const panel = instance;\n\n /* Hooks */\n const { prices } = instance.hooks;\n\n panel.hooks = {\n ...instance.hooks,\n groupActive: null\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n collapseGroupFromPricesGroups: instance.store.subscribe((state, action) => {\n if (action.type !== types.COLLAPSE_GROUP) return;\n\n /* Hooks */\n const { prices: pricesEl } = instance.hooks;\n\n /* Element */\n const elements = pricesEl.querySelectorAll(`[data-group='${action.payload}']`);\n\n /* Collapse */\n [...elements].forEach(element => collapse(element));\n\n /* Unset active */\n const { groupActive } = instance.hooks;\n\n if (!groupActive) {\n return;\n }\n\n unsetActive(instance, groupActive);\n }),\n expandGroupFromPricesGroups: instance.store.subscribe((state, action) => {\n if (action.type !== types.EXPAND_GROUP) return;\n\n /* Hooks */\n const { prices: pricesEl } = instance.hooks;\n\n /* Element */\n const elements = pricesEl.querySelectorAll(`[data-group='${action.payload}']`);\n\n /* Expand */\n [...elements].forEach(element => expand(element));\n })\n };\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n pricesGroupsMouseover: fromEvent(prices, 'mouseover')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => !instance.tooltip),\n map(event => event.target.closest('[data-highlight]')),\n filter(element => element !== null)\n )\n .subscribe(el => {\n /* Data */\n const { category } = el.dataset;\n const { category: categories } = instance.store.select('data').categoriesPrices;\n\n const item = categories.filter(({ id }) => id === +category)[0];\n\n if (!item) return;\n\n /* Add Tooltip */\n addTooltip(instance, { type: TOOLTIP_HIGHLIGHT, category: { highlight: true, ...item } }, el);\n }),\n pricesGroupsMouseout: fromEvent(prices, 'mouseout')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(() => instance.tooltip),\n map(event => event.target.closest('[data-highlight]')),\n filter(element => element !== null)\n )\n .subscribe(() => {\n /* Destroy Tooltip */\n destroyTooltip(instance, { type: TOOLTIP_HIGHLIGHT });\n }),\n pricesGroupsClick: fromEvent(prices, 'click')\n .pipe(\n tap(event => event.stopPropagation()),\n map(event => event.target.closest('[data-header]')),\n filter(element => element !== null)\n )\n .subscribe(element => {\n /* Data */\n const { header } = element.dataset;\n const { groupExpanded } = instance.store.select('data');\n\n const groupEl = element.closest(`[data-group='${+header}']`);\n\n /* Check same groupe */\n const checkGroup = () => {\n if (+header === groupExpanded) {\n /* Unset active */\n const { groupActive } = instance.hooks;\n\n unsetActive(instance, groupActive);\n\n /* Set active */\n setActive(instance, groupEl);\n\n return;\n }\n\n /* Expand */\n if (!(+header === groupExpanded)) {\n /* Collapse older expanded */\n if (groupExpanded) {\n /* Dispatch */\n instance.actions.collapseGroup(groupExpanded);\n }\n\n /* Dispatch */\n instance.actions.expandGroup(+header);\n\n /* Set active */\n setActive(instance, groupEl);\n\n return;\n }\n\n /* Dispatch */\n instance.actions.collapseGroup(+header);\n };\n\n checkGroup();\n })\n };\n}\n\n/* Destroy */\nfunction destroyGroups(instance) {\n /* Data */\n const { crudyn, isMulticabin } = instance.config;\n\n /**\n * We do not want to destroy when we are in type crudyn\n * or we are in type multicabin, since we only have\n * just one price to show\n */\n\n if (crudyn || isMulticabin) {\n return;\n }\n\n const panel = instance;\n\n /* Reactions */\n instance.reactions.collapseGroupFromPricesGroups.unsubscribe();\n delete panel.reactions.collapseGroupFromPricesGroups;\n\n instance.reactions.expandGroupFromPricesGroups.unsubscribe();\n delete panel.reactions.expandGroupFromPricesGroups;\n\n /* Subscriptions */\n instance.subscriptions.pricesGroupsMouseover.unsubscribe();\n delete panel.subscriptions.pricesGroupsMouseover;\n\n instance.subscriptions.pricesGroupsMouseout.unsubscribe();\n delete panel.subscriptions.pricesGroupsMouseout;\n\n instance.subscriptions.pricesGroupsClick.unsubscribe();\n delete panel.subscriptions.pricesGroupsClick;\n}\n\n/* Exports */\nmodule.exports = {\n initGroups,\n destroyGroups\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Groups > Groups > Collapse\n ========================================================================== */\n\n/* Modules */\nconst configuration = require('../../../../../config');\n\n/* Collapse */\nfunction collapse(element) {\n /* Collapse */\n element.classList.remove(configuration().css.isExpanded);\n}\n\n/* Expand */\nfunction expand(element) {\n /* Expand */\n element.classList.add(configuration().css.isExpanded);\n}\n\n/* Exports */\nmodule.exports = {\n collapse,\n expand\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Mapper\n ========================================================================== */\n\n/* Exports */\nmodule.exports = function mapArguments(args = [], values = {}) {\n if (args.length < 1) {\n return args;\n }\n\n return args\n .map(argument => {\n /* Data */\n const { Name, Value } = argument;\n\n if (Value) {\n return argument;\n }\n\n if (!values[Name]) {\n return false;\n }\n\n return {\n ...argument,\n Value: values[Name]\n };\n })\n .filter(item => item);\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Departures > Prices > Items > Loader\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst LoaderTempalte = require('../../../../../../../../loader-banner/template');\nconst Loader = require('../../../../../../../../loader-banner/client/js');\n\n/* Init */\nfunction addLoader(instance) {\n const panel = instance;\n\n const { loader, context } = instance.config;\n\n if (!loader) return;\n\n const node = toNode(LoaderTempalte(loader, context))[0];\n\n document.body.appendChild(node);\n\n /* Add class to body */\n document.body.classList.add('has-loader');\n\n panel.loader = Loader();\n\n document.body.querySelector(`[data-component=\"${panel.loader.config.component}\"]`).classList.add('fixed-loader');\n}\n\n/* Exports */\nmodule.exports = {\n addLoader\n};\n","/* ==========================================================================\n LoaderBanner > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst { sanitizeObject } = require('@bluekiri/alexandria/helpers/sanitize');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/template');\n\nconst configuration = require('./client/js/config');\n\n/**\n * LoaderBanner template\n * @param {object} data Object containing the data model for this component.\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Template(data, context) {\n /* Data */\n const { config = {}, title = '', description = false, banners = [] } = data;\n const { styles = [] } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* Template */\n return html(`\n
\n
\n

${title}

\n ${description ? `

${description}

` : ''}\n ${\n banners.length > 0\n ? `
${Image(\n {\n config: banners[0].config,\n src: banners[0].src,\n alt: banners[0].alt,\n resize: configuration().imgConfig,\n link: { href: banners[0].url, target: '_blank' }\n },\n context\n )}
`\n : ''\n }\n
\n
\n `);\n};\n","/* ==========================================================================\n LoaderBanner > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * LoaderBanner component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function LoaderBanner(selector = '[data-component=LoaderBanner]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.image = Image(`${selector} [data-component=\"ImageRxjs\"]`);\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n LoaderBanner > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { timer } = require('rxjs');\nconst { take, repeat } = require('rxjs/operators');\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n loop: timer(this.config.loop.delay, this.config.loop.delay)\n .pipe(take(this.config.banners.length), repeat(this.config.loop.repeat))\n .subscribe({\n next: index => {\n this.image.hooks.img.src = ViewHelpers(this.config.context).imageResizer(\n this.config.banners[index].src,\n this.config.imgConfig\n );\n this.image.hooks.a.href = this.config.banners[index].url;\n },\n error: () => {},\n complete: () => {}\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n LoaderBanner > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Message\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { interval } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\nconst MessageTemplate = require('../../../templates/message');\n\n/* Create */\nfunction createMessage(instance) {\n /* Data */\n const { literals } = instance.config;\n\n /* Template */\n const template = MessageTemplate(literals);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add */\nfunction addMessage(instance) {\n const panel = instance;\n\n if (panel.message) {\n destroyMessage(instance);\n }\n\n /* Node */\n const node = createMessage(instance);\n panel.message = node;\n\n /* Add class visible */\n interval(50)\n .pipe(take(1))\n .subscribe(() => {\n node.classList.add('is-visible');\n });\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n interval(5000)\n .pipe(take(1))\n .subscribe(() => {\n destroyMessage(instance);\n });\n}\n\n/* Destroy */\nfunction destroyMessage(instance) {\n const panel = instance;\n\n interval(500)\n .pipe(take(1))\n .subscribe(() => {\n /* Remove from DOM */\n instance.message.parentNode.removeChild(instance.message);\n delete panel.message;\n });\n /* Remove class visible */\n instance.message.classList.remove('is-visible');\n}\n\n/* Exports */\nmodule.exports = {\n addMessage,\n destroyMessage\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Message \n ========================================================================== */\nconst { html } = require('common-tags');\n\n/**\n * Message template\n * @param {object} literals\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Message(literals) {\n /* Literals */\n const { alertMessage } = literals;\n\n return html(\n `
\n ${alertMessage}\n
`\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Tooltip > Category\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/client/js');\n\nconst TooltipTemplate = require('../../../templates/tooltip');\n\nconst { TOOLTIP_CATEGORY, TOOLTIP_DEPARTURE_DATE } = require('../../../constants/tooltip');\n\nconst configuration = require('../config');\n\n/* Create */\nfunction createTooltipClicked(instance, data) {\n /* Data */\n const { literals, context } = instance.config;\n\n /* Template */\n const template = TooltipTemplate(data, literals, context);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Init */\nfunction initTooltipClicked(instance, data, element) {\n /* Data */\n const { type } = data;\n\n const panel = instance;\n\n panel.tooltipClicked = Tooltip(`[data-component=Tooltip][data-type=${configuration().type.tooltipClicked}]`, {\n trigger: element\n });\n\n /* Image */\n if (!(type === TOOLTIP_DEPARTURE_DATE)) {\n panel.tooltipClicked = {\n ...instance.tooltipClicked,\n image: Image(`[data-component='ImageRxjs'][data-type='${configuration().type.tooltipClicked}']`)\n };\n }\n}\n\n/* Add */\nfunction addTooltipClicked(instance, data, element) {\n /* Node */\n const node = createTooltipClicked(instance, data);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Init */\n initTooltipClicked(instance, data, element);\n}\n\n/* Destroy */\nfunction destroyTooltipClicked(instance, data) {\n /* Data */\n const { type } = data;\n\n const panel = instance;\n\n /* Image */\n if (type === TOOLTIP_CATEGORY) {\n instance.tooltipClicked.image.actions.destroy();\n delete panel.tooltipClicked.image;\n }\n\n /* Remove from DOM */\n instance.tooltipClicked.element.parentNode.removeChild(instance.tooltipClicked.element);\n delete panel.tooltipClicked;\n}\n\n/* Exports */\nmodule.exports = {\n addTooltipClicked,\n destroyTooltipClicked\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Contact > Name\n ========================================================================== */\n\n/* Modules */\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\n/* eslint-disable-next-line */\nconst InputActions = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/actions');\n\nconst { isValidName } = require('../../../../validations');\n\nconst configuration = require('../../config');\n\n/* Has error */\nfunction hasErrorName(instance) {\n if (instance.contactInputName) {\n const { error } = instance.contactInputName.store.select('input');\n return error;\n }\n\n return true;\n}\n\n/* Init name */\nfunction initName(instance) {\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n /* Reference */\n panel.contactInputName = Input(\n `${selector} [data-component='InputRxjs'][data-type='${configuration().type.contactInputName}']`\n );\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n contactInputName: instance.contactInputName.store.subscribe((state, action) => {\n if (action.type !== InputActions.types.CHANGE_VALUE) return;\n\n /* Pass the info to the store */\n instance.actions.setContact({\n name: action.payload\n });\n\n /* Validate */\n if (!isValidName(action.payload) && action.payload !== '') {\n /* Update UI */\n instance.contactInputName.actions.setError();\n } else {\n instance.contactInputName.actions.setValid();\n }\n })\n };\n\n /* Sync */\n const { value } = instance.contactInputName.store.select('input');\n\n /* Update UI */\n instance.contactInputName.actions.setValid();\n\n /* Pass the info to the store */\n\n instance.actions.setContact({\n name: value || ''\n });\n}\n\n/* Destroy name */\nfunction destroyName(instance) {\n const panel = instance;\n\n instance.reactions.contactInputName.unsubscribe();\n delete panel.reactions.contactInputName;\n\n instance.contactInputName.actions.destroy();\n delete panel.contactInputName;\n}\n\n/* Exports */\nmodule.exports = {\n hasErrorName,\n initName,\n destroyName\n};\n","/* ==========================================================================\n Validations > Email\n ========================================================================== */\n\n/**\n * Is Valid Email\n * @param {string} email\n * @return {boolean} valid/not valid\n */\nfunction isValidEmail(email = '') {\n /* eslint-disable-next-line */\n const reg = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return reg.test(email);\n}\n\n/* Exports */\nmodule.exports = {\n isValidEmail\n};\n","/* ==========================================================================\n Validations > Name\n ========================================================================== */\n\n/**\n * Is Valid Name\n * @param {string} name\n * @return {boolean} valid/not valid\n */\nfunction isValidName(name = '') {\n const reg = /^[a-zA-ZÀ-ÿ]{1}[a-zA-ZÀ-ÿ .'-]+$/;\n return reg.test(name);\n}\n\n/* Exports */\nmodule.exports = {\n isValidName\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Contact > Surname\n ========================================================================== */\n\n/* Modules */\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\n/* eslint-disable-next-line */\nconst InputActions = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/actions');\n\nconst { isValidName } = require('../../../../validations');\n\nconst configuration = require('../../config');\n\n/* Has error */\nfunction hasErrorSurname(instance) {\n if (instance.contactInputSurname) {\n const { error } = instance.contactInputSurname.store.select('input');\n\n return error;\n }\n\n return true;\n}\n\n/* Init surname */\nfunction initSurname(instance) {\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n /* Reference */\n panel.contactInputSurname = Input(\n `${selector} [data-component='InputRxjs'][data-type='${configuration().type.contactInputSurname}']`\n );\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n contactInputSurname: instance.contactInputSurname.store.subscribe((state, action) => {\n if (action.type !== InputActions.types.CHANGE_VALUE) return;\n\n /* Pass the info to the store */\n instance.actions.setContact({\n surname: action.payload\n });\n\n /* Validate */\n if (!isValidName(action.payload) && action.payload !== '') {\n /* Update UI */\n instance.contactInputSurname.actions.setError();\n } else {\n /* Update UI */\n instance.contactInputSurname.actions.setValid();\n }\n })\n };\n\n /* Sync */\n const { value } = instance.contactInputSurname.store.select('input');\n\n /* Update UI */\n instance.contactInputSurname.actions.setValid();\n\n /* Pass the info to the store */\n instance.actions.setContact({\n surname: value || ''\n });\n}\n\n/* Destroy surname */\nfunction destroySurname(instance) {\n const panel = instance;\n\n instance.reactions.contactInputSurname.unsubscribe();\n delete panel.reactions.contactInputSurname;\n\n instance.contactInputSurname.actions.destroy();\n delete panel.contactInputSurname;\n}\n\n/* Exports */\nmodule.exports = {\n hasErrorSurname,\n initSurname,\n destroySurname\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Contact > Phone\n ========================================================================== */\n\n/* Modules */\nconst intlTelInput = require('intl-tel-input');\nconst intlTelInputUtils = require('intl-tel-input/build/js/utils');\n\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\n/* eslint-disable-next-line */\nconst InputActions = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/actions');\n\nconst { fromEvent } = require('rxjs');\n\nconst configuration = require('../../config');\n\n/* Has error */\nfunction hasErrorPhone(instance) {\n if (instance.contactInputPhone) {\n const { error } = instance.contactInputPhone.store.select('input');\n\n return error;\n }\n\n return true;\n}\n\n/* Init phone */\nfunction initPhone(instance) {\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n panel.contactInputPhone = Input(\n `${selector} [data-component='InputRxjs'][data-type='${configuration().type.contactInputPhone}']`\n );\n\n /* Init Intl */\n const { language } = instance.config.context;\n const telInputElement = instance.contactInputPhone.hooks.input;\n\n panel.intl = intlTelInput(telInputElement, {\n preferredCountries: ['ES', 'PT', 'DE', 'FR', 'GB', 'IT', 'BR', 'FI', 'IL', 'AE', 'MX', 'RU'],\n initialCountry: language,\n autoPlaceholder: 'off',\n utilsScript: intlTelInputUtils\n });\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n contactInputPhone: instance.contactInputPhone.store.subscribe((state, action) => {\n if (action.type !== InputActions.types.CHANGE_VALUE) return;\n\n /* In case of future phone validation */\n // const { iso2 } = instance.intl.getSelectedCountryData();\n\n /* Agent */\n // const { validate } = instance.agent.phone;\n\n /* Toggle loading */\n // instance.contactInputPhone.actions.toggleLoading();\n\n // validate(action.payload, iso2).then(data => {\n // console.log('--- Phone validator ---', { data });\n\n // /* Toggle loading */\n // instance.contactInputPhone.actions.toggleLoading();\n\n // /* Data */\n // const { validNumber = false, error = false } = data;\n\n // /* Validate */\n // if (!validNumber || error) {\n // /* Update UI */\n // instance.contactInputPhone.actions.setError();\n // } else {\n // /* Update UI */\n instance.contactInputPhone.actions.setValid();\n // }\n\n /* Pass the info to the store */\n instance.actions.setContact({\n phone: action.payload\n });\n // });\n\n /* Helper from library */\n if (!instance.intl.isValidNumber() && action.payload !== '') {\n /* Update UI */\n instance.contactInputPhone.actions.setError();\n }\n })\n };\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n contactInputPhoneCountry: fromEvent(telInputElement, 'countrychange').subscribe(() => {\n const { iso2 } = instance.intl.getSelectedCountryData();\n const { value } = instance.contactInputPhone.store.select('input');\n\n /* Helper from library */\n if (!instance.intl.isValidNumber()) {\n /* Update UI */\n instance.contactInputPhone.actions.setError();\n\n return;\n }\n\n /* Agent */\n const { validate } = instance.agent.phone;\n\n /* Toggle loading */\n instance.contactInputPhone.actions.toggleLoading();\n\n validate(value, iso2).then(data => {\n console.log('--- Phone validator ---', { data });\n\n /* Toggle loading */\n instance.contactInputPhone.actions.toggleLoading();\n\n /* Data */\n const { validNumber = false, error = false } = data;\n\n /* Validate */\n if (!validNumber || error) {\n /* Update UI */\n instance.contactInputPhone.actions.setError();\n } else {\n /* Update UI */\n instance.contactInputPhone.actions.setValid();\n }\n\n /* Pass the info to the store */\n instance.actions.setContact({\n phone: value\n });\n });\n })\n };\n\n /* Sync */\n const { value } = instance.contactInputPhone.store.select('input');\n\n /* Update UI */\n instance.contactInputPhone.actions.setValid();\n\n /* Pass the info to the store */\n instance.actions.setContact({\n phone: value || ''\n });\n}\n\n/* Destroy phone */\nfunction destroyPhone(instance) {\n const panel = instance;\n\n instance.subscriptions.contactInputPhoneCountry.unsubscribe();\n delete panel.subscriptions.contactInputPhoneCountry;\n\n instance.intl.destroy();\n\n instance.contactInputPhone.actions.destroy();\n delete panel.contactInputPhone;\n}\n\n/* Exports */\nmodule.exports = {\n hasErrorPhone,\n initPhone,\n destroyPhone\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Contact > Email\n ========================================================================== */\n\n/* Modules */\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\n/* eslint-disable-next-line */\nconst InputActions = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/actions');\n\nconst { isValidEmail } = require('../../../../validations');\n\nconst configuration = require('../../config');\n\n/* Has error */\nfunction hasErrorEmail(instance) {\n if (instance.contactInputEmail) {\n const { error } = instance.contactInputEmail.store.select('input');\n\n return error;\n }\n\n return true;\n}\n\n/* Init email */\nfunction initEmail(instance) {\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n /* Reference */\n panel.contactInputEmail = Input(\n `${selector} [data-component='InputRxjs'][data-type='${configuration().type.contactInputEmail}']`\n );\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n contactInputEmail: instance.contactInputEmail.store.subscribe((state, action) => {\n if (action.type !== InputActions.types.CHANGE_VALUE) return;\n\n /* Pass the info to the store */\n instance.actions.setContact({\n email: action.payload\n });\n\n /* Validate */\n if (!isValidEmail(action.payload) && action.payload !== '') {\n /* Update UI */\n instance.contactInputEmail.actions.setError();\n } else {\n /* Update UI */\n instance.contactInputEmail.actions.setValid();\n }\n })\n };\n\n /* Sync */\n const { value } = instance.contactInputEmail.store.select('input');\n\n /* Update UI */\n instance.contactInputEmail.actions.setValid();\n\n /* Pass the info to the store */\n instance.actions.setContact({\n email: value || ''\n });\n}\n\n/* Destroy email */\nfunction destroyEmail(instance) {\n const panel = instance;\n\n instance.reactions.contactInputEmail.unsubscribe();\n delete panel.reactions.contactInputEmail;\n\n instance.contactInputEmail.actions.destroy();\n delete panel.contactInputEmail;\n}\n\n/* Exports */\nmodule.exports = {\n hasErrorEmail,\n initEmail,\n destroyEmail\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Contact > Checkboxes\n ========================================================================== */\n\n/* Modules */\nconst Checkbox = require('@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js');\n/* eslint-disable-next-line */\nconst CheckboxActions = require('@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/client/js/store/actions');\n\n/* Init checkboxes */\nfunction initCheckboxes(instance) {\n const inst = instance;\n\n /* Reference */\n inst.checkboxes = [\n ...instance.element.querySelectorAll(\n `[data-component=\"CheckboxRxjs\"][data-type^=\"${instance.config.type.checkbox}\"]`\n )\n ].map(item => Checkbox(`[data-component='${item.dataset.component}'][data-type='${item.dataset.type}']`));\n\n /* Reactions */\n inst.reactions = {\n ...instance.reactions,\n checkboxesChange: [...instance.checkboxes].map(item => {\n return item.store.subscribe((state, action) => {\n if (action.type !== CheckboxActions.types.TOGGLE) return;\n\n const splitted = item.element.dataset.type.split('__');\n const checkboxName = splitted[splitted.length - 1];\n const checkboxChecked = item.element.firstElementChild.checked;\n\n if (checkboxChecked) item.actions.resetStatus();\n\n instance.actions.saveCheckbox({ [checkboxName]: checkboxChecked });\n });\n })\n };\n}\n\n/* Destroy checkboxes */\nfunction destroyCheckboxes(instance) {\n const inst = instance;\n\n instance.reactions.checkboxesChange.forEach(item => item.unsubscribe());\n delete inst.reactions.checkboxesChange;\n\n instance.contactInputEmail.forEach(item => item.actions.destroy());\n delete inst.contactInputEmail;\n}\n\n/* Exports */\nmodule.exports = {\n initCheckboxes,\n destroyCheckboxes\n};\n","/* ==========================================================================\n CheckboxRxjs > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\nconst { filter } = require('rxjs/operators');\n\nconst { types, actions } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst configuration = require('./config');\n\n/* Prototype */\nconst prototype = {\n /* Pairing label */\n setPairing() {\n if (this.hooks.label) {\n this.hooks.input.setAttribute('id', this.id);\n this.hooks.label.setAttribute('for', this.id);\n }\n\n return this;\n },\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n checkbox: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide()),\n resetStatus: () => this.store.dispatch(actions.resetStatus()),\n setError: () => this.store.dispatch(actions.setError()),\n setValid: () => this.store.dispatch(actions.setValid()),\n toggle: () => this.store.dispatch(actions.toggle()),\n disable: () => this.store.dispatch(actions.disable()),\n enable: () => this.store.dispatch(actions.enable())\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reactions */\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean instance */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n this.element.classList.remove(configuration().css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n this.element.classList.add(configuration().css.hidden);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n this.hooks.input.setAttribute('disabled', true);\n this.element.classList.add(configuration().css.disabled);\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n this.hooks.input.removeAttribute('disabled');\n this.element.classList.remove(configuration().css.disabled);\n }),\n resetStatus: this.store.subscribe((state, action) => {\n if (action.type !== types.RESET_STATUS) return;\n\n this.element.classList.remove(configuration().css.valid);\n this.element.classList.remove(configuration().css.error);\n }),\n setError: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_ERROR) return;\n\n this.element.classList.remove(configuration().css.valid);\n this.element.classList.add(configuration().css.error);\n }),\n setValid: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_VALID) return;\n\n this.element.classList.remove(configuration().css.error);\n this.element.classList.add(configuration().css.valid);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n changes: fromEvent(this.element, 'change')\n .pipe(\n filter(() => {\n /* Data */\n const { disabled } = this.store.select('checkbox');\n\n if (disabled) {\n return false;\n }\n\n return true;\n })\n )\n .subscribe(() => {\n /* Dispatch action */\n this.actions.toggle();\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Sync checked status */\n const { checked } = this.hooks.input;\n\n /* Sync disabled status */\n const { disabled } = this.config;\n\n if (checked) {\n this.actions.toggle();\n }\n\n /* Check for auto disabled from render */\n if (disabled) {\n this.actions.disable();\n }\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Set pairing */\n this.setPairing();\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n CheckboxRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n error: false,\n hidden: false,\n checked: false,\n disabled: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.RESET_STATUS:\n return {\n ...state,\n error: false\n };\n case types.SET_ERROR:\n return {\n ...state,\n error: true\n };\n case types.SET_VALID:\n return {\n ...state,\n error: false\n };\n case types.TOGGLE:\n return {\n ...state,\n checked: !state.checked\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: false\n };\n case types.DISABLE:\n return {\n ...state,\n disabled: true\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CircuitContentCru > Services\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { fromFetch } = require('rxjs/fetch');\nconst { catchError, switchMap } = require('rxjs/operators');\n\n/* Exports */\n/**\n * Services\n * @param {object} context,\n * @returns {object} methods api\n */\nmodule.exports = function Services() {\n return {\n /**\n * Get model\n * @param {object} data,\n * @returns {object} model\n */\n sendContactDataService(data = {}) {\n /* Data */\n const { Method, Url, Arguments } = data;\n return fromFetch(Url, {\n method: Method,\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n Arguments\n })\n }).pipe(\n switchMap(async response => {\n const res = await response;\n if (response.ok) {\n return res.json();\n }\n return of({ error: true, message: `Error fetching model ${res.statusText}` });\n }),\n catchError(async err => {\n const res = await err;\n return of({ error: true, message: res.message });\n })\n );\n }\n };\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Contact > Mapper\n ========================================================================== */\nfunction mapArguments(data) {\n const { args = [], contactData = {}, checks = {} } = data;\n if (args.length < 1) {\n return args;\n }\n\n return args.map(argument => {\n /* Data */\n const { Name, Value } = argument;\n\n if (Value) {\n return argument;\n }\n\n if (contactData[Name]) {\n return { Name: argument.Name, Value: `${contactData[Name]}` };\n }\n\n if (checks[Name]) {\n return { Name: argument.Name, Value: `${checks[Name]}` };\n }\n\n return { Name: argument.Name, Value: '' };\n });\n}\n\n/* Exports */\nmodule.exports = {\n mapArguments\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Utils\n ========================================================================== */\n\n/* Modules */\nconst { CRUISE_CODE, NUM_GUESTS, TC, PAX_CONFIG } = require('../constants')();\n\n/**\n * Is cruise code\n * @param {string} name\n * @returns {boolean} Is cruise code\n */\nfunction isCruiseCode(name = '') {\n return name.toLowerCase() === CRUISE_CODE.toLowerCase();\n}\n\n/**\n * Is num guests\n * @param {string} name\n * @returns {boolean} Is num guests\n */\nfunction isNumGuests(name = '') {\n return name.toLowerCase() === NUM_GUESTS.toLowerCase();\n}\n\n/**\n * Is tc\n * @param {string} name\n * @returns {boolean} Is tc\n */\nfunction isTc(name = '') {\n return name.toLowerCase() === TC.toLowerCase();\n}\n\n/**\n * Is pax config\n * @param {string} name\n * @returns {boolean} Is pax config\n */\nfunction isPaxConfig(name = '') {\n return name.toLowerCase() === PAX_CONFIG.toLowerCase();\n}\n\nconst generateForm = ({ Body, Method, Url }) => {\n /* Generate form */\n const form = document.createElement('form');\n\n form.classList.add('is-hidden');\n\n form.method = Method;\n form.action = Url;\n\n Body.map(item => {\n const { Name, Value } = item;\n const input = document.createElement('input');\n\n input.name = Name;\n input.value = Value;\n\n form.appendChild(input);\n\n return true;\n });\n\n /* Append form to body page */\n document.body.appendChild(form);\n\n return form;\n};\n\n/* Exports */\nmodule.exports = {\n isCruiseCode,\n isNumGuests,\n isTc,\n isPaxConfig,\n generateForm\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures \n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst Groups = require('./groups');\nconst Prices = require('./prices');\n\n/**\n * Departures template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Departures(data, literals, context) {\n /* Template */\n return html(`\n
\n ${Groups(data, literals, context)}\n ${Prices(data, literals, context)}\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Groups\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { groupBy } = require('@bluekiri/alexandria/helpers/array');\n\nconst Crudyn = require('./crudyn');\nconst Group = require('./group');\nconst Highlight = require('./highlight');\nconst Multicabin = require('./multicabin');\n\n/* Render groups */\nconst renderGroups = ({ crudyn, isMulticabin, categoriesPrices }, literals, context) => {\n /* Data */\n const { categoryGroups, category: categories = [] } = categoriesPrices;\n\n if (!crudyn && !isMulticabin) {\n /* Group categories by its group to process later */\n const grouped = groupBy(categories, category => category.catGroup);\n\n return html(`\n ${Highlight(literals, context)}\n ${html(categoryGroups.map(category => Group({ ...category, categories: grouped }, literals, context)))}\n `);\n }\n\n if (!isMulticabin) {\n return html(categoryGroups.map(category => Crudyn(category)));\n }\n\n return html(categoryGroups.map(category => Multicabin(category)));\n};\n\n/**\n * Groups template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Groups(data, literals, context) {\n /* Template */\n return html(`\n
\n ${renderGroups(data, literals, context)}\n \n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Groups > Crudyn\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\n/**\n * Crudyn template\n * @param {object} data Object containing the data model for this component.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Crudyn(data) {\n /* Data */\n const { name = '' } = data;\n\n /* Template */\n return html(`\n
\n

${name}

\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Groups > Group\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst Item = require('./item');\n\nconst { ICON_PLUS } = require('../../../../../constants/icons');\n\n/* Render categories */\nconst renderCategories = (categories, literals, context) => {\n return html(categories.map(category => Item(category, literals, context)));\n};\n\n/**\n * Group template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {string} Html template\n */\nmodule.exports = function Group(data, literals, context) {\n /* Data */\n const { id, name, categories } = data;\n\n /* View Helpers */\n const { icon } = ViewHelpers(context);\n\n /* Template */\n return html(`\n
\n
\n

\n ${icon(ICON_PLUS)}\n ${name}\n

\n
\n
\n ${renderCategories(categories.get(id), literals, context)}\n
\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Groups > Group > Item\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { ICON_MAGNIFIER, ICON_STAR_FILLED } = require('../../../../../../constants/icons');\n\n/**\n * Item template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Item(data, literals, context) {\n /* Data */\n const { id, name = '', advantages = false } = data;\n\n /* View Helpers */\n const { icon } = ViewHelpers(context);\n\n return html(`\n
\n

\n ${icon(ICON_MAGNIFIER)}\n ${name}\n

\n ${advantages ? `${icon(ICON_STAR_FILLED)}` : ''}\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Groups > Highlight\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\n/**\n * Highlight template\n * @param {object} literals\n * @returns {string} Html template\n */\nmodule.exports = function Highlight(literals) {\n /* Data */\n const { highlightLabel = '' } = literals;\n\n /* Template */\n return html(`\n
\n

${highlightLabel}

\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Groups > Multicabin\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\n/**\n * Multicabin template\n * @param {object} data Object containing the data model for this component.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Multicabin(data) {\n /* Data */\n const { name = '' } = data;\n\n /* Template */\n return html(`\n
\n

${name}

\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Prices\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Carousel = require('@bluekiri/alexandria-contrib-components/components/carousel-rxjs/template');\n\nconst Departure = require('./departure');\n\nconst configuration = require('../../../../client/js/config');\n\n/* Is next year */\nconst isNextYear = (before, after) => {\n const beforeYear = before.slice(0, 4);\n const afterYear = after.slice(0, 4);\n\n return +beforeYear < +afterYear;\n};\n\n/* Render carousel */\nconst renderCarousel = (data, literals, context) => {\n /* Data */\n const { crudyn = 0, isMulticabin = 0, categoriesPrices = {} } = data;\n const { departures = [] } = categoriesPrices;\n\n return Carousel(\n addData(\n {\n hasNavigation: true,\n items: departures.map((departure, index) => {\n const hasYear = index > 0 ? isNextYear(departures[index - 1].id, departure.id) : false;\n\n return Departure({ crudyn, isMulticabin, hasYear, ...departure }, literals, context);\n })\n },\n {\n type: configuration().type.departures\n }\n ),\n context\n );\n};\n\n/**\n * Prices template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Prices(data, literals, context) {\n /* Template */\n return html(`\n
\n ${renderCarousel(data, literals, context)}\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Prices > Departure\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { groupBy } = require('@bluekiri/alexandria/helpers/array');\nconst { icon } = require('@bluekiri/alexandria/core/ViewHelpers')();\n\nconst { ICON_PLANE } = require('../../../../../constants/icons');\n\nconst Crudyn = require('./crudyn');\nconst Group = require('./group');\nconst Highlight = require('./highlight');\nconst Multicabin = require('./multicabin');\n\n/* Render year */\nconst renderYear = ({ id, hasYear }) => {\n if (!hasYear) {\n return html('');\n }\n\n const year = id.slice(0, 4);\n\n return html(`\n
\n

${year}

\n
\n `);\n};\n\n/* Render date */\nconst renderDate = ({ id, name, hasFlights }) => {\n return html(`\n
\n ${hasFlights ? icon(ICON_PLANE) : ''}\n ${name}\n
\n `);\n};\n\n/* Render departure */\nconst renderDeparture = (data, literals, context) => {\n /* Data */\n const { id, crudyn = 0, isMulticabin = 0, prices = [] } = data;\n\n /**\n * Group prices by category group, so then we can iterate\n * those groups to render in order\n */\n const grouped = groupBy(prices, price => price.catGroup);\n\n const groups = [...grouped.keys()].map(category => {\n return Group({ id, category, prices: grouped.get(category) }, literals, context);\n });\n\n if (!crudyn && !isMulticabin) {\n /* Group */\n return html(`\n ${Highlight(data, literals, context)}\n ${html(groups)}\n `);\n }\n\n if (!isMulticabin) {\n /* Crudyn */\n return Crudyn(data, literals, context);\n }\n\n /* Multicabin */\n return Multicabin(data, context);\n};\n\n/**\n * Departure template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Departure(data, literals, context) {\n /* Data */\n const { hasYear = false, id, name, hasFlights = false } = data;\n\n /* Template */\n return html(`\n
\n ${renderYear({ id, hasYear })}\n ${renderDate({ id, name, hasFlights })}\n ${renderDeparture(data, literals, context)}\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Prices > Departure > Crudyn\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { ICON_STAR_FILLED } = require('../../../../../../constants/icons');\n\n/* Render price */\nconst renderPrice = (minPrice, literals, context) => {\n /* Literals */\n const { checkPriceLabel = '', perPersonLabel } = literals;\n\n /* Without price */\n if (!minPrice) return checkPriceLabel;\n\n /* View Helpers */\n const { formatPrice } = ViewHelpers(context);\n\n return `\n ${formatPrice(minPrice, context.currency.toUpperCase())}\n ${perPersonLabel}\n `;\n};\n\n/**\n * Crudyn template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Crudyn(data, literals, context) {\n /* Data */\n const { id, minPrice = false, isOffer } = data;\n const { icon } = ViewHelpers(context);\n /* Template */\n return html(`\n
\n

\n ${isOffer ? `${icon(ICON_STAR_FILLED)}` : ''}\n ${renderPrice(minPrice, literals, context)}\n

\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Prices > Departure > Group\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { ICON_STAR_FILLED } = require('../../../../../../constants/icons');\n\nconst Item = require('./item');\n\n/* Render min price */\nconst renderMinPrice = (prices, context) => {\n /* View Helpers */\n const { formatPrice } = ViewHelpers(context);\n\n /**\n * First we will filter the prices that do not\n * have a value to avoid glitches\n */\n const filtered = prices.filter(departure => departure.value && departure.isAvailable);\n\n if (filtered.length < 2) {\n const [{ value = 0 }] = filtered.length ? filtered : [{}];\n\n if (!value) {\n return html(`\n -\n `);\n }\n\n return html(`\n ${formatPrice(value, context.currency.toUpperCase())}\n `);\n }\n\n /* Min price */\n const minPrice = filtered.reduce((acc, curr) => ({ value: Math.min(acc.value, curr.value) }));\n\n return html(`\n ${formatPrice(minPrice.value, context.currency.toUpperCase())}\n `);\n};\n\n/* Render prices */\nconst renderPrices = ({ id, prices }, literals, context) => {\n return html(prices.map(price => Item({ id, ...price }, literals, context)));\n};\n\n/**\n * Group template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Group(data, literals, context) {\n const { icon } = ViewHelpers(context);\n\n /* Data */\n const { id, category, prices } = data;\n\n const hasOffer = prices.filter(item => item.isOffer).length;\n\n /* Template */\n return html(`\n
\n
\n

\n ${renderMinPrice(prices, context)}\n

\n ${hasOffer ? `${icon(ICON_STAR_FILLED)}` : ''}\n
\n
\n ${renderPrices({ id, prices }, literals, context)}\n
\n
\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Prices > Departure > Group > Item\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { ICON_STAR_FILLED } = require('../../../../../../../constants/icons');\n\n/* Render price */\nconst renderPrice = (price, literals, context) => {\n /* Without price */\n if (!price) {\n return html('-');\n }\n\n /* View Helpers */\n const { formatPrice } = ViewHelpers(context);\n\n return formatPrice(price, context.currency.toUpperCase());\n};\n\n/**\n * Item template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Item(data, literals, context) {\n /* Data */\n const { id, category, isOffer = 0, isAvailable = 1, value = false } = data;\n\n /* View Helpers */\n const { icon } = ViewHelpers(context);\n\n /* Template */\n return html(`\n
\n

\n ${renderPrice(value, literals, context)}\n ${isOffer ? `${icon(ICON_STAR_FILLED)}` : ''}\n

\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Prices > Departure > Highlight\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\n/* Render price */\nconst renderPrice = (minPrice, literals, context) => {\n /* View Helpers */\n const { formatPrice } = ViewHelpers(context);\n\n return formatPrice(minPrice, context.currency.toUpperCase());\n};\n\n/**\n * Highlight template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Highlight(data, literals, context) {\n /* Data */\n const { id, minPrice = false, minCategory } = data;\n\n if (+minCategory === 0) {\n return html(`\n
\n

\n -\n

\n
\n `);\n }\n\n /* Template */\n return html(`\n
\n

\n ${renderPrice(minPrice, literals, context)}\n

\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Departures > Prices > Departure > Multicabin\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\n/* Render price */\nconst renderPrice = (minPrice, context) => {\n /* Without price */\n if (!minPrice) {\n return '-';\n }\n\n /* View Helpers */\n const { formatPrice } = ViewHelpers(context);\n\n return formatPrice(minPrice, context.currency.toUpperCase());\n};\n\n/**\n * Multicabin template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Multicabin(data, context) {\n /* Data */\n const { id, minPrice = false } = data;\n\n /* Template */\n return html(`\n
\n

\n ${renderPrice(minPrice, context)}\n

\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Prices Min\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { initInformation, destroyInformation } = require('./information');\nconst { initPrices, destroyPrices } = require('./prices');\n\nconst PricesMin = require('../../../../templates/categories/prices-min');\n\n/* Create */\nfunction createPricesMin(instance) {\n /* Data */\n const { literals, context, minPriceImage } = instance.config;\n const { departures = [] } = instance.store.select('data').categoriesPrices;\n\n /* Template */\n const template = PricesMin({ departures, minPriceImage }, literals, context);\n\n /* Node */\n const node = toNode(template)[0] || '';\n\n /* Return */\n return node;\n}\n\n/* Add */\nfunction addPricesMin(instance) {\n /* Node */\n const node = createPricesMin(instance);\n\n if (!node) return;\n\n /* Add to DOM */\n instance.element.querySelector('[data-prices-min-hook]').appendChild(node);\n\n /* Init */\n initPricesMin(instance);\n}\n\n/* Init */\nfunction initPricesMin(instance) {\n const panel = instance;\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n pricesMin: instance.element.querySelector('[data-prices-min]')\n };\n\n /* Reference */\n panel.categories = {\n ...instance.categories,\n pricesMin: {}\n };\n\n /* Information */\n initInformation(instance);\n\n /* Prices */\n initPrices(instance);\n}\n\n/* Destroy */\nfunction destroyPricesMin(instance) {\n const panel = instance;\n\n if (!instance.hooks.pricesMin) return;\n\n /* Information */\n destroyInformation(instance);\n\n /* Prices */\n destroyPrices(instance);\n\n /* Reference */\n delete panel.categories.pricesMin;\n\n /* Remove from DOM */\n instance.hooks.pricesMin.parentNode.removeChild(instance.hooks.pricesMin);\n\n /* Hooks */\n delete panel.hooks.pricesMin;\n}\n\n/* Exports */\nmodule.exports = {\n addPricesMin,\n initPricesMin,\n destroyPricesMin\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Prices Min > Information\n ========================================================================== */\n\n/* Modules */\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst configuration = require('../../../config');\n\n/* Init */\nfunction initInformation(instance) {\n const panel = instance;\n\n const { selector } = instance;\n\n panel.categories.pricesMin = {\n ...instance.categories.pricesMin,\n image: Image(`${selector} [data-component='ImageRxjs'][data-type='${configuration().type.pricesMin}']`)\n };\n}\n\n/* Destroy */\nfunction destroyInformation(instance) {\n const panel = instance;\n\n /* Reference */\n instance.categories.pricesMin.image.actions.destroy();\n delete panel.categories.pricesMin.image;\n}\n\n/* Exports */\nmodule.exports = {\n initInformation,\n destroyInformation\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Prices Min > Prices\n ========================================================================== */\n\n/* Modules */\nconst Carousel = require('@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js');\n\nconst { fromEvent } = require('rxjs');\nconst { filter, map } = require('rxjs/operators');\n\nconst { actions } = require('../../../store/actions');\n\nconst configuration = require('../../../config');\n\n/* Init */\nfunction initPrices(instance) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n /* Reference */\n const reference = Carousel(\n `${selector} [data-component='CarouselRxjs'][data-type='${configuration().type.pricesMin}']`,\n {\n hasNavigation: true,\n swiper: {\n init: false,\n slidesPerView: 11,\n slidesPerGroup: 11,\n spaceBetween: 8,\n breakpoints: {\n 1500: {\n slidesPerView: 9,\n slidesPerGroup: 9\n },\n 1250: {\n slidesPerView: 7,\n slidesPerGroup: 7\n },\n 1100: {\n slidesPerView: 5,\n slidesPerGroup: 5\n },\n 1024: {\n slidesPerView: 7,\n slidesPerGroup: 7\n },\n 900: {\n slidesPerView: 5,\n slidesPerGroup: 5\n },\n 768: {\n slidesPerView: 3,\n slidesPerGroup: 3\n }\n }\n }\n }\n );\n\n if (!reference) return;\n\n panel.categories.pricesMin = {\n ...instance.categories.pricesMin,\n prices: reference\n };\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n selectDatePriceMin: payload => {\n return instance.store.dispatch(actions.selectDatePriceMin(payload));\n }\n };\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n selectDatePriceMin: fromEvent(reference.element, 'click')\n .pipe(\n map(event => event.target.closest('[data-date]')),\n filter(element => element !== null)\n )\n .subscribe(el => {\n /* Data */\n const { date, category } = el.dataset;\n const { datePriceMin } = instance.store.select('data');\n\n /* Update UI */\n setTimeout(() => {\n /* Remove old active */\n if (datePriceMin) {\n const { element } = instance.categories.pricesMin.prices;\n\n element\n .querySelector(`[data-date='${datePriceMin}']`)\n .parentNode.classList.remove(configuration().css.isActive);\n }\n\n /* Add new active */\n el.parentNode.classList.add(configuration().css.isActive);\n }, 50);\n\n /* Dispatch */\n instance.actions.selectDatePriceMin({ date, catGroup: category });\n })\n };\n\n /**\n * Init now the carousel since we had to bind some events\n * to the swiper instance to the year sticky functionality\n */\n reference.swiper.init();\n}\n\n/* Destroy */\nfunction destroyPrices(instance) {\n const panel = instance;\n\n /* Reference */\n instance.categories.pricesMin.prices.actions.destroy();\n delete panel.categories.pricesMin.prices;\n\n /* Actions */\n delete panel.actions.selectDatePriceMin;\n\n /* Subscriptions */\n instance.subscriptions.selectDatePriceMin.unsubscribe();\n delete panel.subscriptions.selectDatePriceMin;\n}\n\n/* Exports */\nmodule.exports = {\n initPrices,\n destroyPrices\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Prices Min\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { groupBy, sortByKeyLesser } = require('@bluekiri/alexandria/helpers/array');\n\nconst Information = require('./information');\nconst Prices = require('./prices');\n\n/**\n * Prices Min template\n * @param {array} departures\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function PricesMin({ departures, minPriceImage }, literals, context) {\n /**\n * Filter the departures without a min price first\n */\n const filtered = departures.filter(item => item.minPrice);\n\n /**\n * First we want to order the departures by the prices in a lesser way\n * so we will have it ready to then group and extract the first\n * departure on each group\n */\n const sorted = sortByKeyLesser(filtered, 'minPrice');\n\n /**\n * Grouping the departures already sorted in groups by year-month, that way\n * we will have all prices ordered by that rule and we will just have to\n * extract the first one of each group\n */\n const grouped = groupBy(sorted, item => item.id.slice(0, -3));\n\n /**\n * We extract just the first entry of each group because that is the min\n * price we are looking for that month - year departure\n *\n * We will also add the lowest price to the firt group, since we have\n * all sorted now and we will need it later\n *\n * We will also get the price ratio to build the bars after\n */\n const values = [...grouped.values()];\n\n if (!values.length) return html('');\n\n const { minPrice: max } = values[values.length - 1][0];\n\n const minPrices = values.map((group, index) => {\n /* Build price ratio */\n const { minPrice } = group[0];\n const ratio = Math.round((minPrice / max) * 100);\n\n if (!(index === 0)) {\n return {\n ...group[0],\n ratio\n };\n }\n\n return {\n ...group[0],\n ratio,\n lowestPrice: true\n };\n });\n\n /**\n * Finally we will need to sort again since the creation of the set\n * was just ordered by price and it could happen that the minimum prices\n * were the far ahead on departure date\n */\n const minPricesSorted = sortByKeyLesser(minPrices, 'id');\n\n /* check if lenght is equal or less than 5 */\n if (minPricesSorted.length < 5) return html('');\n\n /* Template */\n return html(`\n
\n ${Information(minPriceImage, literals, context)}\n ${Prices(minPricesSorted, literals, context)}\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Prices Min > Information\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/template');\n\nconst { IMAGE, SVG } = require('../../../../constants/prices-min');\n\nconst configuration = require('../../../../client/js/config');\n\n/* Render svg */\nconst renderSvg = () => {\n /* Data */\n const { BUBBLE } = SVG;\n\n return html(`${BUBBLE}`);\n};\n\n/* Render image */\nconst renderImage = (src, context) => {\n /* Data */\n const { IMAGE_HEIGHT, IMAGE_WIDTH } = IMAGE;\n\n return Image(\n addData(\n {\n src,\n alt: 'avatar',\n resize: {\n height: IMAGE_HEIGHT,\n width: IMAGE_WIDTH,\n operation: 'crop',\n suboperation: 'topcenter'\n }\n },\n {\n type: configuration().type.pricesMin\n }\n ),\n context\n );\n};\n\n/**\n * Information template\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Information(minPriceImage, literals, context) {\n /* Data */\n const { pricesMinLabel = '' } = literals;\n\n /* Template */\n return html(`\n
\n ${renderImage(minPriceImage, context)}\n
\n ${renderSvg()}\n

${pricesMinLabel}

\n
\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Constants > Prices Min\n ========================================================================== */\n\n/* Modules */\nconst IMAGE = require('./image');\nconst SVG = require('./svg');\n\n/* Exports */\nmodule.exports = {\n IMAGE,\n SVG\n};\n","/* ==========================================================================\n CircuitContentCru > Constants > Prices Min > Image\n ========================================================================== */\n\nconst IMAGE_SRC_LOGITRAVEL = '/comun/images/logis/logiSenalaI.png';\nconst IMAGE_SRC_TRAVELTOOL = 'traveltool/images/logis/formaPago_cabecera.png';\n\nconst IMAGE_HEIGHT = 165;\nconst IMAGE_WIDTH = 180;\n\nconst IMAGE_SRCS = {\n LOGITRAVEL: IMAGE_SRC_LOGITRAVEL,\n TRAVELTOOL: IMAGE_SRC_TRAVELTOOL\n};\n\n/* Exports */\nmodule.exports = {\n IMAGE_SRCS,\n IMAGE_HEIGHT,\n IMAGE_WIDTH\n};\n","/* ==========================================================================\n CircuitContentCru > Constants > Prices Min > Svg\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\n\nconst BUBBLE = html(`\n \n \n \n`);\n\n/* Exports */\nmodule.exports = {\n BUBBLE\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Prices Min > Prices\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Carousel = require('@bluekiri/alexandria-contrib-components/components/carousel-rxjs/template');\n\nconst Price = require('./price');\n\nconst configuration = require('../../../../client/js/config');\n\n/* Render carousel */\nconst renderCarousel = (prices, literals, context) => {\n return Carousel(\n addData(\n {\n hasNavigation: true,\n hasPagination: false,\n hasBreakpoints: true,\n items: prices.map(price => Price(price, literals, context))\n },\n {\n type: configuration().type.pricesMin\n }\n ),\n context\n );\n};\n\n/**\n * Prices template\n * @param {array} departures\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Prices(minPricesSorted, literals, context) {\n /* Template */\n return html(`\n
\n ${renderCarousel(minPricesSorted, literals, context)}\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Categories > Prices Min > Prices > Price\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { HEIGHT_MAX } = require('../../../../../constants/prices-min/bar');\n\nconst configuration = require('../../../../../client/js/config');\n\n/* Calculate height */\nconst calculateHeight = ratio => (HEIGHT_MAX * ratio) / 100;\n\n/**\n * Price template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Price(price, literals, context) {\n /* Data */\n const { id, minPrice, minPriceDate, ratio, lowestPrice = false, minCategory, prices = [] } = price;\n const { catGroup = 0 } = prices.filter(item => item.category === minCategory)[0] || {};\n /* View Helpers */\n const { formatPrice } = ViewHelpers(context);\n\n /* Template */\n return html(`\n
\n
\n
\n \n ${formatPrice(minPrice, context.currency.toUpperCase())}\n \n
\n
\n

${minPriceDate}

\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Constants > Prices Min > Bar\n ========================================================================== */\n\nconst HEIGHT_MAX = 80;\n\n/* Exports */\nmodule.exports = {\n HEIGHT_MAX\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Advantages\n ========================================================================== */\n\n/* Modules */\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst { fromEvent } = require('rxjs');\nconst { tap } = require('rxjs/operators');\n\nconst { addTooltip, destroyTooltip } = require('../../tooltip');\n\nconst configuration = require('../../config');\nconst { TOOLTIP_ADVANTAGE } = require('../../../../constants/tooltip');\n\n/* Init */\nfunction initAdvantages(instance) {\n const panel = instance;\n\n const { selector } = instance;\n\n const images = [\n ...instance.element.querySelectorAll(\n `${selector} [data-component='ImageRxjs'][data-type^='${configuration().type.advantages}']`\n )\n ];\n\n const buttons = [\n ...instance.element.querySelectorAll(\n `${selector} [data-component='ButtonRxjs'][data-type^='${configuration().type.readMore}']`\n )\n ];\n\n panel.categories.advantages = {\n ...instance.categories.advantages,\n images: images.map(item => Image(`${selector} [data-component='ImageRxjs'][data-type='${item.dataset.type}']`)),\n buttons: buttons.map((item, index) => {\n const reference = Button(`${selector} [data-component='ButtonRxjs'][data-type='${item.dataset.type}']`);\n\n panel.subscriptions = {\n ...instance.subscriptions,\n [`buttonMouseover${index}`]: fromEvent(item, 'mouseover')\n .pipe(tap(event => event.stopPropagation()))\n .subscribe(() => {\n const { advantage } = reference.config;\n\n addTooltip(instance, { advantage, type: TOOLTIP_ADVANTAGE }, item);\n }),\n [`buttonMouseout${index}`]: fromEvent(item, 'mouseout')\n .pipe(tap(event => event.stopPropagation()))\n .subscribe(() => {\n destroyTooltip(instance, { type: TOOLTIP_ADVANTAGE });\n })\n };\n\n return reference;\n })\n };\n}\n\n/* Destroy */\nfunction destroyAdvantages(instance) {\n const panel = instance;\n\n /* Reference */\n instance.categories.advantages.image.actions.destroy();\n delete panel.categories.advantages.image;\n}\n\n/* Exports */\nmodule.exports = {\n initAdvantages,\n destroyAdvantages\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Categories > Mapper\n ========================================================================== */\n\n/* Exports */\nmodule.exports = function mapArguments(args = [], values = {}) {\n if (args.length < 1) {\n return args;\n }\n\n return args\n .map(argument => {\n /* Data */\n const { Name, Value } = argument;\n\n if (Value) {\n return argument;\n }\n\n if (!values[Name]) {\n return false;\n }\n\n return {\n ...argument,\n Value: values[Name]\n };\n })\n .filter(item => item);\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers\n ========================================================================== */\n\n/* Modules */\nconst { initFlightsIncluded, destroyFlightsIncluded } = require('./flights-included');\nconst { initRooms, destroyRooms } = require('./rooms');\nconst { initInformations, destroyInformations } = require('./informations');\nconst { initNights, destroyNights } = require('./nights');\n\n/* Init */\nfunction initPassengers(instance) {\n /* Data */\n const { passengers } = instance.config;\n const { origins = false, nights = false } = passengers;\n\n const panel = instance;\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n passengers: instance.element.querySelector('[data-passengers]')\n };\n\n /* Rooms */\n initRooms(instance);\n\n /* Informations */\n initInformations(instance);\n\n /* Flights included */\n if (origins) initFlightsIncluded(instance);\n\n /* Nights */\n if (nights) initNights(instance);\n}\n\n/* Destroy */\nfunction destroyPassengers(instance) {\n /* Data */\n const { passengers } = instance.config;\n const { origins = false, nights = false } = passengers;\n\n const panel = instance;\n\n /* Rooms */\n destroyRooms(instance);\n\n /* Informations */\n destroyInformations(instance);\n\n /* Flights included */\n if (origins) destroyFlightsIncluded(instance);\n\n /* Nights */\n if (nights) destroyNights(instance);\n\n /* Remove from DOM */\n instance.hooks.passengers.parentNode.removeChild(instance.hooks.passengers);\n delete panel.hooks.passengers;\n}\n\n/* Exports */\nmodule.exports = {\n initPassengers,\n destroyPassengers\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Flights Included\n ========================================================================== */\n\n/* Modules */\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js');\nconst SelectAct = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\n\nconst { getDepartures } = require('../../categories');\n\nconst getCategoryConstants = require('../../categories/constants');\n\nconst { initResident, addResident, destroyResident } = require('./resident');\nconst { addOtherAirports, destroyOtherAirports } = require('./other-airports');\n\nconst { actions } = require('../../store/actions');\n\nconst configuration = require('../../config');\n\nconst setOption = (data, instance) => {\n const { value, nights, origin, ALTERNATIVE_NIGHTS, ORIGIN } = data;\n\n /* When other airports option is selected */\n if (value === configuration().otherAirportsDropdownValue) {\n addOtherAirports({ nights, ALTERNATIVE_NIGHTS, ORIGIN }, instance);\n } else {\n /* Values */\n const values = {\n [ALTERNATIVE_NIGHTS]: Object.values(nights)\n .map(item => `${item.id}-${item.value}`)\n .join('_'),\n [ORIGIN]: origin\n };\n\n getDepartures(instance, values);\n }\n};\n\n/* Init */\nfunction initFlightsIncluded(instance) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n /* Config */\n const { crudyn } = instance.config;\n\n /* Reference */\n panel.origin = Select(`${selector} [data-component='SelectRxjs'][data-type='${configuration().type.origin}']`);\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n autocomplete: instance.element.querySelector('[data-autocomplete]')\n };\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n setOrigin: payload => {\n return instance.store.dispatch(actions.setOrigin(payload));\n }\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n changeOrigin: instance.origin.store.subscribe((state, action) => {\n if (action.type !== SelectAct.types.SELECT_OPTION) return;\n const { originsResident } = instance.config.passengers;\n\n const { value } = action.payload;\n\n if (instance.otherAirports) {\n destroyOtherAirports(instance);\n }\n\n /* Dispatch */\n instance.actions.setOrigin(value);\n\n if (originsResident && originsResident.indexOf(value) !== -1) {\n addResident(instance);\n } else {\n destroyResident(instance);\n }\n\n if (!crudyn) return;\n\n /* Data */\n const { nights, origin } = instance.store.select('data');\n\n /* Get constant with params name to send */\n const { ALTERNATIVE_NIGHTS, ORIGIN } = getCategoryConstants('crudyn');\n setOption({ value, nights, origin, ALTERNATIVE_NIGHTS, ORIGIN }, instance);\n })\n };\n\n /* Sync */\n const { value } = instance.origin.store.select('select').value;\n\n /* Dispatch */\n instance.actions.setOrigin(value);\n\n /* Init resident */\n initResident(instance);\n}\n\n/* Destroy */\nfunction destroyFlightsIncluded(instance) {\n const panel = instance;\n\n /* Reference */\n instance.origin.actions.destroy();\n delete panel.origin;\n\n /* Actions */\n delete panel.actions.setOrigin;\n\n /* Reactions */\n instance.reactions.changeOrigin.unsubscribe();\n delete panel.reactions.changeOrigin;\n}\n\n/* Exports */\nmodule.exports = {\n initFlightsIncluded,\n destroyFlightsIncluded\n};\n","/* ==========================================================================\n SelectRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\nconst Choices = require('choices.js');\nconst { fromEvent, of } = require('rxjs');\nconst { switchMap, filter } = require('rxjs/operators');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initLoader, destroyLoader } = require('./loader');\n\nconst Utils = require('./utils');\n\nconst configuration = require('./config');\n\n/* Helpers */\nconst setDataMultiple = instance => {\n const data = instance.choices.getValue();\n\n if (data.length > 0) {\n instance.actions.selectOption(data.map(item => ({ value: item.value, label: item.label })));\n\n if (!instance.element.classList.contains(configuration().css.hasItems)) {\n instance.element.classList.add(configuration().css.hasItems);\n }\n }\n};\n\nconst setDataSingle = instance => {\n const data = instance.choices.getValue();\n\n if (data) {\n instance.actions.selectOption({ value: data.value, label: data.label });\n }\n};\n\n/* Prototype */\nconst prototype = {\n /* Pairing label */\n setPairing() {\n if (this.hooks.label) {\n this.hooks.select.setAttribute('id', this.id);\n this.hooks.label.setAttribute('for', this.id);\n }\n\n return this;\n },\n /* Setup choices */\n setupChoices() {\n if (this.choices) return this;\n\n /* Data */\n const { multiple } = this.config;\n\n /* Literals */\n const {\n noResultsText = 'No results found',\n searchPlaceholderValue = 'Type to search...'\n } = this.config.literals;\n\n /* Create 3rd party library choices instance */\n this.choices = new Choices(this.hooks.select, {\n searchEnabled: true,\n renderChoiceLimit: -1 /* limit the quantity of options shown, -1 infinite */,\n searchResultLimit: 5 /* Limit the quantity of options to show on seach, -1 infinite */,\n removeItemButton: multiple /* for multiple select true */,\n placeholderValue: searchPlaceholderValue,\n searchPlaceholderValue,\n loadingText: 'Loading...',\n noResultsText,\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n sortFn: () => {},\n ...this.config.choices\n });\n\n return this;\n },\n /* Set up store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n select: reducer\n });\n\n return this;\n },\n /* Set up actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide()),\n resetStatus: () => this.store.dispatch(actions.resetStatus()),\n setError: () => this.store.dispatch(actions.setError()),\n setValid: () => this.store.dispatch(actions.setValid()),\n setOption: value => this.store.dispatch(actions.setOption(value)),\n setOptions: options => this.store.dispatch(actions.setOptions(options)),\n selectOption: value => this.store.dispatch(actions.selectOption(value)),\n enable: () => this.store.dispatch(actions.enable()),\n disable: () => this.store.dispatch(actions.disable())\n };\n\n return this;\n },\n /* Set up reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Loader */\n destroyLoader(this);\n\n /* Clean subscriptions */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n this.choices.destroy();\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean instance */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n\n this.element.classList.remove(css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n\n this.element.classList.add(css.hidden);\n }),\n resetStatus: this.store.subscribe((state, action) => {\n if (action.type !== types.RESET_STATUS) return;\n\n const { css } = this.config;\n\n this.element.classList.remove(css.valid);\n this.element.classList.remove(css.error);\n }),\n setError: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_ERROR) return;\n\n const { css } = this.config;\n\n this.element.classList.remove(css.valid);\n this.element.classList.add(css.error);\n }),\n setValid: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_VALID) return;\n\n const { css } = this.config;\n\n this.element.classList.remove(css.error);\n this.element.classList.add(css.valid);\n }),\n setOptions: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_OPTIONS) return;\n\n this.choices.setChoices(action.payload, 'value', 'label', true);\n }),\n setOption: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_OPTION) return;\n\n /* Data */\n const { multiple } = this.config;\n\n /* Set that option to choices */\n this.choices.setChoiceByValue(action.payload);\n\n /* Update UI in case of multiple */\n if (multiple) {\n if (this.element.classList.contains(configuration().css.hasItems)) return;\n\n this.element.classList.add(configuration().css.hasItems);\n }\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n /* Enable choices */\n this.choices.enable();\n\n /* Update UI */\n this.element.classList.remove(configuration().css.disabled);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n /* Disable choices */\n this.choices.disable();\n\n /* Update UI */\n this.element.classList.add(configuration().css.disabled);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n changes: fromEvent(this.element, 'change')\n .pipe(\n switchMap(() => of(this.choices.getValue())),\n filter(data => data)\n )\n .subscribe(data => {\n /* Data */\n const { value, label } = data;\n const { multiple } = this.config;\n\n /* Set value depending on mode */\n if (multiple) {\n this.actions.selectOption(data.map(item => ({ value: item.value, label: item.label })));\n\n if (data.length > 0) {\n if (this.element.classList.contains(configuration().css.hasItems)) return;\n\n this.element.classList.add(configuration().css.hasItems);\n } else {\n this.element.classList.remove(configuration().css.hasItems);\n }\n } else {\n /* Dispatch action to set value */\n this.actions.selectOption({ value, label });\n }\n }),\n showDropdown: fromEvent(this.element, 'showDropdown').subscribe(() => {\n /* Utils */\n const { fixSelectedChoice } = Utils(this);\n\n /**\n * Fix selected issue\n */\n fixSelectedChoice();\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n const { items, value = false, multiple, disabled } = this.config;\n\n /* Set options meta items */\n if (!items) return this;\n\n /* Options */\n this.actions.setOptions(items);\n\n if (multiple) {\n setDataMultiple(this);\n } else {\n setDataSingle(this);\n }\n\n /**\n * In case we have a specified value above the default on choices\n * we have to override it so we have the flexibility to have\n * a unique item set for multiple usages with custom values on\n * each select\n */\n if (value) {\n this.actions.setOption(value);\n }\n\n if (disabled) {\n this.actions.disable();\n }\n\n return this;\n },\n /* Init */\n init() {\n /* Pairing label */\n this.setPairing();\n\n /* Setup choices */\n this.setupChoices();\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Loader */\n initLoader(this);\n\n /* Start */\n this.start();\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n SelectRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n display: true,\n error: false,\n valid: false,\n multiple: false,\n options: null,\n value: null,\n disabled: false,\n isLoading: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.TOGGLE_LOADING:\n return {\n ...state,\n isLoading: !state.isLoading\n };\n case types.DISPLAY:\n return {\n ...state,\n display: true\n };\n case types.HIDE:\n return {\n ...state,\n display: false\n };\n case types.RESET_STATUS:\n return {\n ...state,\n error: false,\n valid: false\n };\n case types.SET_VALID:\n return {\n ...state,\n error: false,\n valid: true\n };\n case types.SET_ERROR:\n return {\n ...state,\n error: true,\n valid: false\n };\n case types.SET_OPTION:\n return {\n ...state,\n value: state.options.filter(option => option.value === action.payload).reduce(acc => acc)\n };\n case types.SET_OPTIONS:\n return {\n ...state,\n options: action.payload\n };\n case types.SELECT_OPTION:\n return {\n ...state,\n value: action.payload\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: false\n };\n case types.DISABLE:\n return {\n ...state,\n disabled: true\n };\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n InputRxjs > Client > Loader\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst configuration = require('../config');\nconst { actions, types } = require('../store/actions');\n\n/* Add */\nfunction addLoader(instance) {\n const { loader = false } = instance.hooks;\n\n if (loader) {\n return;\n }\n\n const template = html(`\n
\n
\n
\n `);\n\n const node = toNode(template)[0];\n\n const panel = instance;\n\n /* DOM */\n instance.element.classList.add(configuration().css.loading);\n instance.element.appendChild(node);\n\n /* Disable */\n instance.hooks.select.setAttribute('disabled', true);\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n loader: instance.element.querySelector('[data-loader]')\n };\n}\n\n/* Remove */\nfunction removeLoader(instance) {\n const { loader = false } = instance.hooks;\n\n if (!loader) {\n return;\n }\n\n const panel = instance;\n\n /* DOM */\n instance.element.removeChild(instance.hooks.loader);\n instance.element.classList.remove(configuration().css.loading);\n\n /* Enable */\n instance.hooks.select.removeAttribute('disabled');\n\n /* Hooks */\n delete panel.hooks.loader;\n}\n\n/* Init */\nfunction initLoader(instance) {\n /* Data */\n const { hasLoader } = instance.config;\n\n if (!hasLoader) {\n return;\n }\n\n const panel = instance;\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n toggleLoading: () => instance.store.dispatch(actions.toggleLoading())\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n toggleLoading: instance.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_LOADING) return;\n\n const { isLoading } = state.select;\n\n if (!isLoading) {\n /* Remove */\n removeLoader(instance);\n\n /* Enable choices */\n instance.choices.enable();\n\n return;\n }\n\n /* Add */\n addLoader(instance);\n\n /* Disable choices */\n instance.choices.disable();\n })\n };\n}\n\n/* Destroy */\nfunction destroyLoader(instance) {\n /* Data */\n const { hasLoader } = instance.config;\n\n if (!hasLoader) {\n return;\n }\n\n const panel = instance;\n\n /* Reactions */\n instance.reactions.toggleLoading.unsubscribe();\n delete panel.reactions.toggleLoading;\n\n /* Actions */\n delete panel.actions.toggleLoading;\n}\n\n/* Exports */\nmodule.exports = {\n initLoader,\n destroyLoader\n};\n","/* ==========================================================================\n SelectRxjs > Client > Utils\n ========================================================================== */\n\n/* Modules */\nconst configuration = require('../config');\n\n/* Export */\nmodule.exports = function Utils(instance) {\n return {\n /**\n * Fix selected choice\n */\n fixSelectedChoice: () => {\n if (!instance.choices) return;\n\n const choiceListEl = instance.choices.choiceList.element;\n\n choiceListEl.querySelectorAll('[data-choice]').forEach(el => {\n el.classList.remove(configuration().css.selected);\n\n const { value } = instance.choices.getValue() || {};\n const sValue = `${value}`;\n const dValue = el.dataset.value;\n\n if (sValue === dValue) {\n el.classList.add(configuration().css.selected);\n }\n });\n }\n };\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Flights Included > Resident\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Checkbox = require('@bluekiri/alexandria-contrib-components/components/checkbox-rxjs/template');\n\nconst configuration = require('../../../../client/js/config');\n\n/* Render select */\nconst renderCheckbox = (literals, context) => {\n /* Literals */\n const { residentLabel } = literals;\n\n return Checkbox(\n addStyle(\n addData(\n {\n label: residentLabel,\n checked: false\n },\n {\n type: configuration().type.resident\n }\n ),\n ['circuit-content-cru__resident']\n ),\n context\n );\n};\n\n/**\n * Resident template\n * @param {array} list of airports\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Resident(resident, literals, context) {\n if (!resident) return html('');\n\n /* Template */\n return renderCheckbox(literals, context);\n};\n","/* ==========================================================================\n CheckboxRxjs > Template\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\n\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('./client/js/config');\n\n/**\n * CheckboxRxjs template\n * @param {object} data Object containing the data model for this component.\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Template(data = {}) {\n /* Data */\n const { config = {}, label, checked = false, disabled = false, name } = data;\n const { styles = [] } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* Template */\n return html(`\n
\n \n \n\n \n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Flights Included > OtherAirports\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Autocomplete = require('@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js');\nconst AComAct = require('@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/client/js/store/actions');\n\nconst OtherAirports = require('../../../../../templates/passengers/flights-included/other-airports');\n\nconst { getDepartures } = require('../../../categories');\n\nconst { actions } = require('../../../store/actions');\nconst { addResident, destroyResident } = require('../resident');\n\nconst configuration = require('../../../config');\n\n/* Add Other Airports */\nfunction addOtherAirports(data, instance) {\n /* Data */\n const { literals, context } = instance.config;\n\n /* template */\n const template = OtherAirports(literals, context);\n\n /* node */\n const node = toNode(template)[0];\n\n /* Append node */\n instance.hooks.autocomplete.appendChild(node);\n\n /* Init */\n initOtherAirports(data, instance);\n}\n\n/* Init */\nfunction initOtherAirports(data, instance) {\n const panel = instance;\n const { nights, ALTERNATIVE_NIGHTS, ORIGIN } = data;\n\n /* Selector */\n const { selector } = instance;\n\n /* Reference */\n panel.otherAirports = Autocomplete(\n `${selector} [data-component='AutocompleteRxjs'][data-type='${configuration().type.otherAirports}']`\n );\n\n if (!panel.otherAirports) return;\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n setOtherAirports: payload => {\n return instance.store.dispatch(actions.setOtherAirports(payload));\n }\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n changeOtherAirports: instance.otherAirports.store.subscribe((state, action) => {\n if (action.type !== AComAct.types.CHANGE_VALUE) return;\n const { originsResident } = instance.config.passengers;\n\n /* Values */\n const values = {\n [ALTERNATIVE_NIGHTS]: Object.values(nights)\n .map(item => `${item.id}-${item.value}`)\n .join('_'),\n [ORIGIN]: instance.otherAirports.store.state.autocomplete.value.value\n };\n\n if (\n originsResident &&\n originsResident.indexOf(instance.otherAirports.store.state.autocomplete.value.value) !== -1\n ) {\n addResident(instance);\n } else {\n destroyResident(instance);\n }\n\n getDepartures(instance, values);\n instance.otherAirports.element.classList.remove('not-valid');\n instance.actions.setOrigin(instance.otherAirports.store.state.autocomplete.value.value);\n })\n };\n}\n\n/* Destroy */\nfunction destroyOtherAirports(instance) {\n const panel = instance;\n\n if (!panel.otherAirports) return;\n\n /* Reference */\n instance.otherAirports.actions.destroy();\n delete panel.otherAirports;\n\n /* Actions */\n delete panel.actions.setOtherAirports;\n\n /* Reactions */\n instance.reactions.changeOtherAirports.unsubscribe();\n delete panel.reactions.changeOtherAirports;\n}\n\n/* Exports */\nmodule.exports = {\n initOtherAirports,\n addOtherAirports,\n destroyOtherAirports\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * AutocompleteRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function AutocompleteRxjs(selector = '[data-component=AutocompleteRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n input: instance.element.querySelector('input'),\n label: instance.element.querySelector('label'),\n loader: instance.element.querySelector('[data-loader]')\n };\n\n /* ID for pairing */\n instance.id = randomId(randomId('input'));\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\nconst { debounceTime, map, tap, distinctUntilChanged, filter, switchMap } = require('rxjs/operators');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { startSuggestions, destroySuggestions } = require('./suggestions');\nconst { startInput } = require('./input');\nconst { initLoader, destroyLoader } = require('./loader');\n\nconst Services = require('./services');\n\nconst { NO_OPEN_SUGGESTIONS_KEYS } = require('../../constants');\n\n/* Prototype */\nconst prototype = {\n /* Pairing label */\n setPairing() {\n if (this.hooks.label) {\n this.hooks.input.setAttribute('id', this.id);\n this.hooks.label.setAttribute('for', this.id);\n }\n return this;\n },\n\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n autocomplete: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n clear: () => this.store.dispatch(actions.clear()),\n destroy: () => this.store.dispatch(actions.destroy()),\n disable: () => this.store.dispatch(actions.disable()),\n display: () => this.store.dispatch(actions.display()),\n setUiState: data => this.store.dispatch(actions.setUiState(data)),\n enable: () => this.store.dispatch(actions.enable()),\n hide: () => this.store.dispatch(actions.hide()),\n setQuery: query => this.store.dispatch(actions.setQuery(query)),\n setValue: data => this.store.dispatch(actions.setValue(data))\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Destroy components */\n destroySuggestions(this);\n destroyLoader(this);\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n\n setValue: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_VALUE) return;\n\n /* Data */\n const { text } = action.payload;\n const { active } = this.store.select('autocomplete');\n\n /* Update input */\n this.hooks.input.value = text;\n\n if (active) return;\n\n /* Toggle active */\n this.actions.toggleActive();\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n const { css } = this.config;\n this.element.classList.add(css.disabled);\n this.hooks.input.setAttribute('disabled', '');\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n const { css } = this.config;\n this.element.classList.remove(css.disabled);\n this.hooks.input.removeAttribute('disabled');\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n this.element.classList.add(css.hidden);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n this.element.classList.remove(css.hidden);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n /* Build service */\n const { getSuggestions } = Services(this.config);\n\n this.subscriptions = {\n keyups: fromEvent(this.hooks.input, 'keyup')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(event => !NO_OPEN_SUGGESTIONS_KEYS.some(key => key === event.keyCode)),\n map(event => event.target.value),\n distinctUntilChanged(),\n debounceTime(200),\n tap(value => {\n /* Close suggestions */\n const { openSuggestions } = this.store.select('autocomplete');\n if (value && value.length < this.config.threshold && openSuggestions)\n this.actions.closeSuggestions();\n }),\n filter(value => !!value && value.length >= this.config.threshold),\n tap(value => this.actions.setQuery(value)),\n switchMap(getSuggestions)\n )\n .subscribe(data => {\n /* Data */\n const { limit, hasAllAirpots } = this.config;\n const { d = [], error: queryError } = data;\n const { error } = this.store.select('autocomplete');\n\n /* Set error */\n if (queryError) {\n if (!error) this.actions.setError();\n this.actions.closeSuggestions();\n\n return;\n }\n\n /* Remove error */\n if (error) this.actions.resetStatus();\n\n const list = !hasAllAirpots ? d.filter(item => item.id.split('-')[0] !== 'AEC') : d;\n\n /* Dispatch action to set suggestions */\n this.actions.setSuggestions(list.slice(0, limit));\n }),\n document: fromEvent(window.document, 'click')\n .pipe(\n filter(event => !event.target.closest(`${this.selector}`)),\n filter(() => this.store.select('autocomplete').openSuggestions),\n map(() => {\n const { suggestions, openSuggestions } = this.store.select('autocomplete');\n\n return { suggestions, openSuggestions };\n })\n )\n .subscribe(() => {\n /* Close suggestions and sync input value on click outside */\n this.actions.closeSuggestions();\n this.actions.syncValue();\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n const { value, hidden, active, disabled, isLoading } = this.config;\n\n /* Sync store */\n this.actions.setUiState({ hidden, active, disabled, isLoading });\n\n if (disabled) this.actions.disable();\n\n if (!value) return this;\n\n /* Dispatch action */\n this.actions.setValue(value);\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Set pairing */\n this.setPairing();\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n startInput(this);\n startSuggestions(this);\n initLoader(this);\n\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n AutocompleteRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n active: false,\n disabled: false,\n hidden: false,\n error: false,\n valid: false,\n suggestions: [],\n openSuggestions: false,\n tooltipType: '',\n query: '',\n value: null,\n isLoading: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n const { type, payload = {} } = action;\n return (\n {\n [types.DISABLE]: {\n ...state,\n disabled: true\n },\n [types.ENABLE]: {\n ...state,\n disabled: false\n },\n [types.DISPLAY]: {\n ...state,\n hidden: false\n },\n [types.HIDE]: {\n ...state,\n hidden: true\n },\n [types.TOGGLE_ACTIVE]: {\n ...state,\n active: !state.active\n },\n [types.SET_VALUE]: {\n ...state,\n value: payload\n },\n [types.CHANGE_VALUE]: {\n ...state,\n value: payload\n },\n [types.RESET_STATUS]: {\n ...state,\n error: false,\n valid: false\n },\n [types.SET_ERROR]: {\n ...state,\n error: true,\n valid: false\n },\n [types.SET_UI_STATE]: {\n ...state,\n active: payload.active || state.active,\n hidden: payload.hidden || state.hidden,\n isLoading: payload.isLoading || state.isLoading\n },\n [types.SET_VALID]: {\n ...state,\n error: false,\n valid: true\n },\n [types.CLEAR]: {\n ...state,\n suggestions: [],\n query: '',\n value: null,\n openSuggestions: false\n },\n [types.CLOSE_SUGGESTIONS]: {\n ...state,\n openSuggestions: false\n },\n [types.OPEN_SUGGESTIONS]: {\n ...state,\n tooltipType: payload,\n openSuggestions: true\n },\n [types.SET_QUERY]: {\n ...state,\n query: payload\n },\n [types.SET_SUGGESTIONS]: {\n ...state,\n suggestions: payload\n },\n [types.TOGGLE_LOADING]: {\n ...state,\n isLoading: !state.isLoading\n }\n }[type] || state\n );\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > Suggestions\n ========================================================================== */\n\n/* Modules */\nconst { decode } = require('he');\nconst { html } = require('common-tags');\n\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { fromEvent } = require('rxjs');\nconst { map, tap, filter } = require('rxjs/operators');\n\nconst { actions, types } = require('../store/actions');\n\nconst TooltipTemplate = require('../../../templates/tooltipPanel');\nconst TooltipClient = require('../../../../tooltip/client/js');\n\nconst { initKeyboard, destroyKeyboard } = require('./keyboard');\n\nconst { collectionByGroup } = require('../helpers/data');\n\nconst { ICONS } = require('../../../constants');\nconst configuration = require('../config');\n\nconst {\n hooks: { suggestionsList: hookSuggestionsList }\n} = configuration();\n\n/* Render suggestion */\nconst renderSuggestion = (data, context) => {\n /* Data */\n const { text, index, query } = data;\n\n /* View helpers */\n const { markdown } = ViewHelpers(context);\n\n /* Regex to look for query, remove invalid chars parenthesis and forward slash */\n const regex = new RegExp(query.replace(/[\\\\{()}]/g, ''), 'gi');\n\n const suggestionText = markdown(text.replace(regex, str => `**${str}**`));\n\n return html(`\n

\n ${suggestionText}\n

\n `);\n};\n\n/* Render group */\nconst renderGroup = (data, literals, context) => {\n /* Data */\n const { group = {}, query = '' } = data;\n\n /* Suggestions */\n const { key = '', suggestions = [] } = group;\n\n /* View helpers */\n const { icon } = ViewHelpers(context);\n\n return html(`\n

\n ${icon(ICONS[key])}\n ${literals[key] || ''}\n

\n ${html(suggestions.map(item => renderSuggestion({ ...item, query }, context)))}\n `);\n};\n\n/* Render groups */\nconst renderGroups = (data, literals, context) => {\n const { suggestions = [], query = '' } = data;\n\n /* Exit when no suggestions */\n if (suggestions.length < 1) return '';\n\n return html(collectionByGroup(suggestions).map(group => renderGroup({ group, query }, literals, context)));\n};\n\n/* Render suggestions */\nconst renderSuggestions = (data, literals, context) =>\n html(`\n
\n ${renderGroups(data, literals, context)}\n
\n `);\n\n/* Create */\nfunction createSuggestions(instance) {\n /* Data */\n const { config = {}, store = {} } = instance;\n const { context = {}, literals = {} } = config;\n const { suggestions = [], query } = store.select('autocomplete');\n\n /* Exit when no suggestions */\n if (suggestions.length < 1) return false;\n\n /* -Template */\n return renderSuggestions({ suggestions, query }, literals, context);\n}\n\nfunction createPanel(instance, content) {\n const { config = {}, store = {} } = instance;\n const { context = {}, placement } = config;\n\n /* Data */\n const { tooltipType: type } = store.select('autocomplete');\n\n /* Prepare tooltip data */\n const dataTooltip = {\n placement,\n type,\n content: html(content)\n };\n\n return toNode(TooltipTemplate(dataTooltip, context))[0];\n}\n\nfunction initSuggestions(instance) {\n const panel = instance;\n\n const { store = {} } = instance;\n const { input } = instance.hooks;\n\n /* Data */\n const { tooltipType } = store.select('autocomplete');\n\n /* Init tooltip */\n panel.tooltip = TooltipClient(`[data-component=\"Tooltip\"][data-type=\"${tooltipType}\"]`, {\n trigger: input\n });\n\n if (!panel.tooltip) return;\n\n /* Update hooks */\n panel.hooks = {\n ...instance.hooks,\n list: panel.tooltip.element.querySelector('[data-list]')\n };\n\n /* Extend actions */\n panel.actions = {\n ...instance.actions,\n changeValue: data => instance.store.dispatch(actions.changeValue(data))\n };\n\n /* Extend Reactions */\n panel.reactions = {\n ...instance.reactions,\n changeValue: instance.store.subscribe((state, action) => {\n if (action.type !== types.CHANGE_VALUE) return;\n\n /* Dispatch close panel suggestions */\n panel.actions.closeSuggestions();\n /* Sync input value */\n panel.actions.syncValue();\n })\n };\n\n /* Update subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n clicks: fromEvent(instance.hooks.list, 'click')\n .pipe(\n tap(event => event.stopPropagation()),\n map(event => event.target.closest('[data-autocomplete-suggestion]')),\n filter(element => !!element),\n map(element => +element.dataset.autocompleteSuggestion),\n map(index => instance.store.select('autocomplete').suggestions[index])\n )\n .subscribe(value => {\n /* Dispatch */\n instance.actions.changeValue(value);\n })\n };\n\n /* Keyboard */\n initKeyboard(instance);\n}\n\n/* Add */\nfunction addSuggestions(instance) {\n const panel = instance;\n\n const { config = {}, hooks = {} } = instance;\n const { appendToParent } = config;\n\n const { input } = hooks;\n\n /* Create Suggestions */\n const suggestionsTemplate = createSuggestions(instance);\n\n /* no suggestions -> close suggestions */\n if (!suggestionsTemplate) {\n /* Close suggestion and sync input value */\n panel.actions.closeSuggestions();\n panel.actions.syncValue();\n return;\n }\n\n /* Add tooltip with suggestions to DOM */\n if (appendToParent) input.parentNode.appendChild(createPanel(instance, suggestionsTemplate));\n else document.body.appendChild(createPanel(instance, suggestionsTemplate));\n\n initSuggestions(instance);\n}\n\n/* Update suggestions */\nfunction updateSuggestions(instance) {\n const panel = instance;\n\n /* Data */\n const { suggestions, query } = instance.store.select('autocomplete');\n const { literals, context } = instance.config;\n\n /* -Template */\n const template = renderGroups({ suggestions, query }, literals, context);\n\n panel.hooks.list.innerHTML = template;\n}\n\nfunction destroyTooltip(instance) {\n const panel = instance;\n\n if (!instance.tooltip) return;\n\n /* Destroy component */\n instance.tooltip.actions.destroy();\n\n /* Remove references */\n delete panel.tooltip;\n}\n\n/* Destroy suggestions */\nfunction destroySuggestions(instance) {\n const panel = instance;\n if (!instance.tooltip) return;\n\n /* Destroy */\n destroyTooltip(instance);\n\n /* Actions */\n delete panel.actions.changeValue;\n\n /* Reactions */\n instance.reactions.changeValue.unsubscribe();\n delete panel.reactions.changeValue;\n\n /* Subscriptions */\n instance.subscriptions.clicks.unsubscribe();\n delete panel.subscriptions.clicks;\n\n /* Keyboard */\n destroyKeyboard(instance);\n}\n\nfunction startSuggestions(instance) {\n const panel = instance;\n const { hooks = {}, config = {} } = panel;\n const { hasPlaceHolder } = config;\n const { input: inputEl } = hooks;\n\n /* Extends actions */\n panel.actions = {\n ...panel.actions,\n openSuggestions: () => {\n const tooltipType = randomId(randomId(configuration().type.tooltip));\n\n return instance.store.dispatch(actions.openSuggestions(tooltipType));\n },\n closeSuggestions: () => instance.store.dispatch(actions.closeSuggestions()),\n setSuggestions: data => {\n /**\n * Decode the special characters from the API\n */\n const suggestions = data.map(item => ({ ...item, text: decode(item.text) }));\n\n return instance.store.dispatch(actions.setSuggestions(suggestions));\n }\n };\n\n /* Extends reactions */\n panel.reactions = {\n ...panel.reactions,\n clear: instance.store.subscribe((state, action) => {\n if (action.type !== types.CLEAR) return;\n\n /* Data */\n const { error, active, isLoading } = panel.store.select('autocomplete');\n\n /* Toggle input label position */\n if (inputEl.value === '') {\n if (!hasPlaceHolder && active) panel.actions.toggleActive();\n if (error && !isLoading) panel.actions.resetStatus();\n }\n }),\n closeSuggestions: instance.store.subscribe((state, action) => {\n if (action.type !== types.CLOSE_SUGGESTIONS) return;\n\n /* Destroy suggestions */\n destroySuggestions(panel);\n }),\n openSuggestions: instance.store.subscribe((state, action) => {\n if (action.type !== types.OPEN_SUGGESTIONS) return;\n\n /* Add panel suggestions */\n addSuggestions(instance);\n }),\n setSuggestions: instance.store.subscribe((state, action) => {\n if (action.type !== types.SET_SUGGESTIONS) return;\n\n /* Data */\n const { openSuggestions, suggestions } = instance.store.select('autocomplete');\n\n if (!suggestions.length) return;\n\n if (!openSuggestions) {\n instance.actions.openSuggestions();\n return;\n }\n\n /* Update UI suggestions */\n updateSuggestions(instance);\n })\n };\n}\n/* Exports */\nmodule.exports = {\n updateSuggestions,\n addSuggestions,\n destroySuggestions,\n startSuggestions\n};\n","/* ==========================================================================\n AutocompleteRxjs > Templates > TooltipPanel\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\n\nconst { PLACEMENT } = require('../constants');\nconst configuration = require('../client/js/config');\n\nconst {\n hooks: { panelContent: hookPanelContent, suggestion: hookSuggestions }\n} = configuration();\n\n/**\n * Rating template\n * @param {object} data Object containing the data model for this component.\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\n\nmodule.exports = function Template(data, context = {}) {\n const { content = '', type, placement = PLACEMENT } = data;\n\n return html(`\n `);\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > Suggestions > Keyboard\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { tap, filter } = require('rxjs/operators');\n\nconst { getNextSibling, getPreviousSibling } = require('../../../../../helpers/dom');\n\nconst configuration = require('../config');\n\nconst { SUGGESTIONS_KEYS, KEY_ARROW_UP, KEY_ARROW_DOWN, KEY_ENTER, KEY_ESC, KEY_TAB } = require('../../../constants');\n\n/* Helpers */\nconst goToFirstEl = instance => {\n const panel = instance;\n\n /* Hooks */\n const { list } = instance.hooks;\n\n /* Els */\n panel.hooks.keyedEl = list.querySelector('[data-autocomplete-suggestion]');\n instance.hooks.keyedEl.classList.add(configuration().css.keyed);\n instance.hooks.keyedEl.scrollIntoView();\n};\n\nconst goToLastEl = instance => {\n const panel = instance;\n\n /* Hooks */\n const { list } = instance.hooks;\n\n /* Els */\n panel.hooks.keyedEl = [...list.querySelectorAll('[data-autocomplete-suggestion]')].pop();\n instance.hooks.keyedEl.classList.add(configuration().css.keyed);\n instance.hooks.keyedEl.scrollIntoView();\n};\n\nconst goToNextEl = (element, instance) => {\n const panel = instance;\n\n if (!element) {\n goToFirstEl(instance);\n\n return;\n }\n\n element.classList.remove(configuration().css.keyed);\n panel.hooks.keyedEl = getNextSibling(element, '[data-autocomplete-suggestion]');\n\n if (!instance.hooks.keyedEl) {\n goToFirstEl(instance);\n\n return;\n }\n\n instance.hooks.keyedEl.classList.add(configuration().css.keyed);\n instance.hooks.keyedEl.scrollIntoView();\n};\n\nconst goToPreviousEl = (element, instance) => {\n const panel = instance;\n\n if (!element) {\n goToLastEl(instance);\n\n return;\n }\n\n element.classList.remove(configuration().css.keyed);\n panel.hooks.keyedEl = getPreviousSibling(element, '[data-autocomplete-suggestion]');\n\n if (!instance.hooks.keyedEl) {\n goToLastEl(instance);\n\n return;\n }\n\n instance.hooks.keyedEl.classList.add(configuration().css.keyed);\n instance.hooks.keyedEl.scrollIntoView();\n};\n\nconst handleTab = instance => {\n const { suggestions } = instance.store.select('autocomplete');\n const { keyedEl } = instance.hooks;\n\n if (!keyedEl) {\n /* Change value to the first one */\n instance.actions.changeValue(suggestions[0]);\n\n return;\n }\n\n /* Change value to the keyed one */\n instance.actions.changeValue(suggestions[+keyedEl.dataset.autocompleteSuggestion]);\n};\n\nconst handleEnter = instance => {\n const { suggestions } = instance.store.select('autocomplete');\n const { keyedEl } = instance.hooks;\n\n if (!keyedEl) {\n return;\n }\n\n /* Change value to the keyed one */\n instance.actions.changeValue(suggestions[+keyedEl.dataset.autocompleteSuggestion]);\n};\n\n/* Init */\nfunction initKeyboard(instance) {\n const panel = instance;\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n keyedEl: null\n };\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n keydowns: fromEvent(instance.hooks.input, 'keydown')\n .pipe(\n tap(event => event.stopPropagation()),\n filter(event => SUGGESTIONS_KEYS.includes(event.keyCode)),\n filter(() => instance.store.select('autocomplete').openSuggestions)\n )\n .subscribe(event => {\n event.preventDefault();\n const { keyCode } = event;\n const { keyedEl } = instance.hooks;\n\n switch (keyCode) {\n case KEY_ESC:\n instance.hooks.input.blur();\n /* Close suggestions and sync input value */\n instance.actions.closeSuggestions();\n instance.actions.syncValue();\n\n break;\n case KEY_ARROW_DOWN:\n goToNextEl(keyedEl, instance);\n break;\n case KEY_ARROW_UP:\n goToPreviousEl(keyedEl, instance);\n break;\n case KEY_ENTER:\n handleEnter(instance);\n break;\n case KEY_TAB:\n handleTab(instance);\n break;\n default:\n break;\n }\n })\n };\n}\n\n/* Destroy */\nfunction destroyKeyboard(instance) {\n const panel = instance;\n\n /* Hooks */\n panel.hooks.keyedEl = null;\n\n /* Subscriptions */\n instance.subscriptions.keydowns.unsubscribe();\n delete panel.subscriptions.keydowns;\n}\n\n/* Exports */\nmodule.exports = {\n initKeyboard,\n destroyKeyboard\n};\n","/* ==========================================================================\n Helpers > Dom\n ========================================================================== */\n\n/**\n * Get next sibling\n * @param {HTMLElement} element\n * @param {string} selector where to stop\n * @returns {HTMLElement} next sibling\n */\nfunction getNextSibling(element, selector) {\n /* Get the next sibling element */\n let sibling = element.nextElementSibling;\n\n if (!sibling) {\n return null;\n }\n\n /* If there's no selector, return the first sibling */\n if (!selector) return sibling;\n\n /**\n * If the sibling matches our selector, use it\n * If not, jump to the next sibling and continue the loop\n */\n while (sibling) {\n if (sibling.matches(selector)) return sibling;\n sibling = sibling.nextElementSibling;\n }\n\n return sibling;\n}\n\n/**\n * Get previous sibling\n * @param {HTMLElement} element\n * @param {string} selector where to stop\n * @returns {HTMLElement} previous sibling\n */\nfunction getPreviousSibling(element, selector) {\n /* Get the next sibling element */\n let sibling = element.previousElementSibling;\n\n if (!sibling) {\n return null;\n }\n\n /* If there's no selector, return the first sibling */\n if (!selector) return sibling;\n\n /**\n * If the sibling matches our selector, use it\n * If not, jump to the next sibling and continue the loop\n */\n while (sibling) {\n if (sibling.matches(selector)) return sibling;\n sibling = sibling.previousElementSibling;\n }\n\n return sibling;\n}\n\n/* Exports */\nmodule.exports = {\n getNextSibling,\n getPreviousSibling\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > Helpers > Data\n ========================================================================== */\n\n/* Modules */\nconst { groupBy } = require('../../../../../helpers/array');\n\n/**\n * Group by type a collection of objects\n * @param {array} collection of objects\n * @return {set} grouped collection\n */\nfunction groupByType(collection) {\n if (collection.length < 1) return collection;\n\n return groupBy(\n collection.map((item, index) => ({ ...item, index })),\n item => item.type\n );\n}\n\n/**\n * Collection by group\n * Transforms a collection into the same 2 dimensional grouped by types\n * @\n */\nfunction collectionByGroup(collection) {\n if (collection.length < 1) return collection;\n\n const grouped = groupByType(collection);\n\n return [...grouped.keys()].map(key => ({ key, suggestions: grouped.get(key) }));\n}\n\n/* Exports */\nmodule.exports = {\n collectionByGroup\n};\n","/* ==========================================================================\n Helpers > Array\n ========================================================================== */\n\n/**\n * Group By\n * Groups a collection of objects based on key\n * @param {array} Collection\n * @param {function} Key getter\n * @returns {array} Collection grouped by key\n */\nfunction groupBy(list, fn) {\n const map = new Map();\n list.forEach(item => {\n const key = fn(item);\n const collection = map.get(key);\n if (!collection) {\n map.set(key, [item]);\n } else {\n collection.push(item);\n }\n });\n\n return map;\n}\n\n/**\n * Sort by key value\n * Sorts an array of objects by the given key name\n * @param {array} Collection\n * @param {string} Key value\n * @returns {array} Collection ordered by the key value\n */\nfunction sortByKey(collection = [], key = '') {\n if (!key) return collection.slice();\n\n return collection.sort((a, b) => (a[key] > b[key] ? -1 : 1));\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction containsArray(superset = [], subset = []) {\n if (subset.length === 0) {\n return false;\n }\n return subset.every(value => superset.indexOf(value) >= 0);\n}\n\n/* Exports */\nmodule.exports = {\n groupBy,\n sortByKey,\n containsArray\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > Prototype\n ========================================================================== */\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { filter } = require('rxjs/operators');\nconst { actions, types } = require('../store/actions');\n\nconst configuration = require('../config');\n\nconst {\n css: { valid: cssValid, error: cssError, active: cssActive }\n} = configuration();\n\nfunction startInput(instance) {\n const panel = instance;\n const { hooks = {}, config = {} } = instance;\n const { input: inputEl } = hooks;\n\n /* Extends actions */\n panel.actions = {\n ...panel.actions,\n resetStatus: () => panel.store.dispatch(actions.resetStatus()),\n setError: () => panel.store.dispatch(actions.setError()),\n setValid: () => panel.store.dispatch(actions.setValid()),\n syncValue: () => panel.store.dispatch(actions.syncValue()),\n toggleActive: () => panel.store.dispatch(actions.toggleActive())\n };\n\n /* Extends reactions */\n panel.reactions = {\n ...panel.reactions,\n setError: panel.store.subscribe((state, action) => {\n if (action.type !== types.SET_ERROR) return;\n\n panel.element.classList.remove(cssValid);\n panel.element.classList.add(cssError);\n }),\n setValid: panel.store.subscribe((state, action) => {\n if (action.type !== types.SET_VALID) return;\n\n panel.element.classList.remove(cssError);\n panel.element.classList.add(cssValid);\n }),\n resetStatus: panel.store.subscribe((state, action) => {\n if (action.type !== types.RESET_STATUS) return;\n\n panel.element.classList.remove(cssValid);\n panel.element.classList.remove(cssError);\n }),\n syncValue: panel.store.subscribe((state, action) => {\n if (action.type !== types.SYNC_VALUE) return;\n\n /* Data */\n const { value, error } = panel.store.select('autocomplete');\n const { text } = value || {};\n\n /* Don't sync input and clear */\n if (error && inputEl.value !== '') {\n panel.actions.clear();\n return;\n }\n\n /* Empty imput value and Clear */\n if (!text || inputEl.value === '') {\n inputEl.value = '';\n panel.actions.clear();\n return;\n }\n\n /* Restore stored value */\n if (text !== inputEl.value) inputEl.value = text;\n }),\n toggleActive: panel.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_ACTIVE) return;\n\n /* Data */\n const { active } = panel.store.select('autocomplete');\n const { isAlternative } = config;\n\n /* is alternative, don't toggle */\n if (isAlternative) return;\n\n /* Label up */\n if (active) {\n panel.element.classList.add(cssActive);\n return;\n }\n\n /* Lobel down */\n panel.element.classList.remove(cssActive);\n })\n };\n\n /* Extends subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n focusIn: fromEvent(panel.hooks.input, 'focusin').subscribe(() => {\n const { active } = panel.store.select('autocomplete');\n\n const { selectionRange } = config;\n\n /* Tooggle input label */\n if (!active && !panel.config.isAlternative) panel.actions.toggleActive();\n\n if (!selectionRange) return;\n\n /* Select all content in input */\n panel.hooks.input.setSelectionRange(0, panel.hooks.input.value.length);\n }),\n focusOut: fromEvent(panel.hooks.input, 'focusout')\n .pipe(filter(() => !panel.store.select('autocomplete').openSuggestions))\n .subscribe(() => {\n panel.actions.syncValue();\n })\n };\n}\n\nmodule.exports = {\n startInput\n};\n","/* ==========================================================================\n InputRxjs > Client > Loader\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { actions, types } = require('../store/actions');\n\nconst configuration = require('../config');\n\nconst { LOADER_TEMPLATE } = require('../../../constants');\n\n/* Add */\nfunction addLoader(instance) {\n const { loader = false } = instance.hooks;\n\n if (loader) return;\n\n /* Close suggestions and syncValue */\n instance.actions.closeSuggestions();\n instance.actions.syncValue();\n\n const template = html(LOADER_TEMPLATE);\n\n const node = toNode(template)[0];\n\n const inst = instance;\n\n /* DOM */\n instance.element.classList.add(configuration().css.loading);\n instance.element.appendChild(node);\n\n /* Disable */\n instance.hooks.input.setAttribute('disabled', true);\n\n /* Hooks */\n inst.hooks = {\n ...instance.hooks,\n loader: instance.element.querySelector('[data-loader]')\n };\n}\n\n/* Remove */\nfunction removeLoader(instance) {\n const { loader = false } = instance.hooks;\n\n if (!loader) {\n return;\n }\n\n const inst = instance;\n\n /* DOM */\n instance.element.removeChild(instance.hooks.loader);\n instance.element.classList.remove(configuration().css.loading);\n\n /* Enable */\n instance.hooks.input.removeAttribute('disabled');\n\n /* Hooks */\n delete inst.hooks.loader;\n}\n\n/* Init */\nfunction initLoader(instance) {\n const inst = instance;\n\n /* Actions */\n inst.actions = {\n ...instance.actions,\n toggleLoading: () => instance.store.dispatch(actions.toggleLoading())\n };\n\n /* Reactions */\n inst.reactions = {\n ...instance.reactions,\n toggleLoading: instance.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_LOADING) return;\n\n const { isLoading } = state.autocomplete;\n\n if (!isLoading) {\n /* Remove */\n removeLoader(instance);\n\n return;\n }\n\n /* Add */\n addLoader(instance);\n })\n };\n}\n\n/* Destroy */\nfunction destroyLoader(instance) {\n /* Data */\n const { hasLoader } = instance.config;\n\n if (!hasLoader) {\n return;\n }\n\n const inst = instance;\n\n /* Reactions */\n instance.reactions.toggleLoading.unsubscribe();\n delete inst.reactions.toggleLoading;\n\n /* Actions */\n delete inst.actions.toggleLoading;\n}\n\n/* Exports */\nmodule.exports = {\n initLoader,\n destroyLoader\n};\n","/* ==========================================================================\n AutocompleteRxjs > Client > Services\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { catchError, switchMap } = require('rxjs/operators');\nconst { fromFetch } = require('rxjs/fetch');\n\nconst BORG_ENDPOINT = '//autocomplete.toolfactory.tech/query';\n\n/* Global variables for AbortController */\nlet controller;\n\n/* Exports */\nmodule.exports = function Services(config = {}) {\n /* Data */\n const { geolocation = false, max = 20, types = [], context, operator, codes = [] } = config;\n const { language } = context;\n\n /* Cancel the previous request */\n if (controller !== undefined) {\n controller.abort();\n }\n\n /* Feature detect */\n if ('AbortController' in window) {\n controller = new AbortController();\n }\n\n /**\n * Get suggestions\n * Params documentation:\n * q: query string to took for\n * f: format\n * g: boolean to include geolocation data\n * n: maximum number of suggestions\n * l: language\n * t: list of types\n * o: list of [codes]\n * p: operator \"OR/AND\"\n *\n * @param {string} text to look for in borg\n * @returns {JSON} data\n */\n function getSuggestions(text = '') {\n /* Build url */\n const url = BORG_ENDPOINT.concat(\n '?',\n `q=${text}`,\n `&f=json`,\n `&g=${geolocation}`,\n `&n=${max}`,\n `&l=${language}`,\n `&t=${types.join(',')}`,\n operator ? `&p=${operator}` : '',\n codes.length ? `&o=${codes.map(code => code)}` : ''\n ).trim();\n\n return fromFetch(url, {\n signal: controller.signal,\n credentials: 'same-origin',\n cache: 'no-store'\n }).pipe(\n switchMap(response => {\n if (response.ok) {\n return response.json();\n }\n return of({ error: true, message: `Error fetching results in borg ${response.statusText}` });\n }),\n catchError(err => of({ error: true, message: err.message }))\n );\n }\n\n return {\n getSuggestions\n };\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Flights Included > Other Airports\n ========================================================================== */\n\n/* Import modules */\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Autocomplete = require('@bluekiri/alexandria-contrib-components/components/autocomplete-rxjs/template');\n\nconst configuration = require('../../../../client/js/config');\n\n/* Render select */\nconst renderOtherAirports = (literals, context) => {\n /* Literals */\n const { otherAirportsLabel } = literals;\n\n return Autocomplete(\n addStyle(\n addData(\n {\n label: otherAirportsLabel,\n checked: false,\n icon: 'marker',\n types: ['AER']\n },\n {\n type: configuration().type.otherAirports\n }\n ),\n ['circuit-content-cru__other-airports']\n ),\n context\n );\n};\n\n/**\n * OtherAirports template\n * @param {array} list of airports\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function OtherAirports(literals, context) {\n /* Template */\n return renderOtherAirports(literals, context);\n};\n","/* ==========================================================================\n AutocompleteRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst { sanitizeSingleQuote } = require('../../helpers/sanitize');\n\nconst configuration = require('./client/js/config');\nconst { GEOLOCATION, LIMIT, THRESHOLD, PLACEMENT, APPENDTOPARENT, LOADER_TEMPLATE, MAX } = require('./constants');\n\nconst renderInput = data => {\n const { title, name, placeholder, isLoading } = data;\n\n const titleAttr = title ? `title='${title}'` : '';\n const nameAttr = name ? `name='${name}'` : '';\n const placeholderAttr = placeholder ? `placeholder='${placeholder}'` : '';\n const disableAttr = isLoading ? 'disabled' : '';\n\n return html(``);\n};\n\n/**\n * AutocompleteRxjs template\n * @param {object} data Object containing the data model for this component.\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Template(data, context) {\n /* Data */\n const {\n config = {},\n label,\n icon,\n placeholder,\n value = false,\n geolocation = GEOLOCATION,\n limit = LIMIT,\n max = MAX,\n threshold = THRESHOLD,\n placement = PLACEMENT,\n appendToParent = APPENDTOPARENT,\n types = [],\n operator,\n codes,\n hidden = false,\n active = false,\n disabled = false,\n isLoading = false\n } = data;\n const { styles = [], literals = {}, isAlternative = false } = config;\n\n const { dataType } = prepareDataConfig(config.data);\n const dataTypeAttr = dataType ? html(`data-type=\"${dataType}\"`) : html('');\n const configData = {\n ...config,\n context,\n literals,\n value,\n appendToParent,\n geolocation,\n limit,\n max,\n threshold,\n hasPlaceHolder: !!placeholder,\n placement,\n types,\n operator,\n codes,\n hidden,\n active,\n disabled,\n isLoading\n };\n const dataConfigAttr = html(`data-config='${sanitizeSingleQuote(JSON.stringify({ ...configData }))}'`);\n\n /* Css .clases */\n const cssClass = ''.concat(\n 'input-rxjs ',\n 'autocomplete-rxjs ',\n isAlternative ? `${configuration().css.alternative}` : '',\n placeholder && !isAlternative ? ` ${configuration().css.active}` : '',\n hidden ? ` ${configuration().css.hidden}` : '',\n active || (value && value !== null) ? ` ${configuration().css.active}` : '',\n disabled ? ` ${configuration().css.disabled}` : '',\n isLoading ? `${configuration().css.loading}` : '',\n ...styles.map(style => ` ${style}`)\n );\n\n /* Render elements */\n const renderLabel = label ? `` : html('');\n const renderIcon = icon ? ViewHelpers(context).icon(icon) : html('');\n const loaderTemplate = isLoading ? LOADER_TEMPLATE : '';\n\n /* -Template */\n return html(`\n
\n ${renderLabel}\n ${renderIcon}\n ${renderInput({ ...data, isAlternative, isLoading })}\n ${loaderTemplate}\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Rooms\n ========================================================================== */\n\n/* Modules */\nconst Counter = require('@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js');\nconst CounterAct = require('@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/store/actions');\n\nconst { actions } = require('../../store/actions');\n\nconst configuration = require('../../config');\n\n/* Init */\nfunction initRooms(instance) {\n /* Data */\n const { multicabin } = instance.config;\n\n if (!multicabin) {\n return;\n }\n\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n /* Reference */\n panel.rooms = Counter(`${selector} [data-component='CounterRxjs'][data-type='${configuration().type.counter}']`);\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n addRoom: () => {\n return instance.store.dispatch(actions.addRoom());\n },\n deleteRoom: (index = false) => {\n return instance.store.dispatch(actions.deleteRoom(index));\n },\n setRooms: payload => {\n return instance.store.dispatch(actions.setRooms(payload));\n }\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n increment: instance.rooms.store.subscribe((state, action) => {\n if (action.type !== CounterAct.types.INCREMENT) return;\n\n /* Dispatch */\n instance.actions.addRoom();\n }),\n decrement: instance.rooms.store.subscribe((state, action) => {\n if (action.type !== CounterAct.types.DECREMENT) return;\n const { index } = instance.informations.filter(item => item).reverse()[0];\n\n /* Dispatch */\n instance.actions.deleteRoom(index);\n })\n };\n\n /* Sync */\n const { value } = instance.rooms.store.select('counter');\n\n /* Dispatch */\n instance.actions.setRooms(value);\n}\n\n/* Destroy */\nfunction destroyRooms(instance) {\n /* Data */\n const { multicabin } = instance.config;\n\n if (!multicabin) {\n return;\n }\n\n const panel = instance;\n\n /* Reference */\n instance.rooms.actions.destroy();\n delete panel.rooms;\n\n /* Actions */\n delete panel.actions.addRoom;\n delete panel.actions.deleteRoom;\n delete panel.actions.setRooms;\n\n /* Reactions */\n instance.reactions.increment.unsubscribe();\n delete panel.reactions.increment;\n\n instance.reactions.decrement.unsubscribe();\n delete panel.reactions.decrement;\n}\n\n/* Exports */\nmodule.exports = {\n initRooms,\n destroyRooms\n};\n","/* ==========================================================================\n CounterRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initButtons, destroyButtons } = require('./buttons');\n\nconst { updateUI } = require('./ui');\n\nconst configuration = require('./config');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n /* Create store */\n this.store = new Store({\n counter: reducer\n });\n\n return this;\n },\n /* Actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide()),\n resetStatus: () => this.store.dispatch(actions.resetStatus()),\n setError: () => this.store.dispatch(actions.setError()),\n setValid: () => this.store.dispatch(actions.setValid()),\n disable: () => this.store.dispatch(actions.disable()),\n enable: () => this.store.dispatch(actions.enable()),\n set: payload => this.store.dispatch(actions.set(payload))\n };\n\n return this;\n },\n /* Reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Buttons */\n destroyButtons(this);\n\n /* Unsubscribe */\n this.unsubscribe();\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean references */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n this.element.classList.remove(configuration().css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n this.element.classList.add(configuration().css.hidden);\n }),\n resetStatus: this.store.subscribe((state, action) => {\n if (action.type !== types.RESET_STATUS) return;\n\n this.element.classList.remove(configuration().css.error);\n this.element.classList.remove(configuration().css.valid);\n }),\n setError: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_ERROR) return;\n\n this.element.classList.remove(configuration().css.valid);\n this.element.classList.add(configuration().css.error);\n }),\n setValid: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_VALID) return;\n\n this.element.classList.remove(configuration().css.error);\n this.element.classList.add(configuration().css.valid);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n this.element.classList.add(configuration().css.disabled);\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n this.element.classList.remove(configuration().css.disabled);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n const { value } = this.config;\n\n /* Update State initial */\n updateUI(value, this);\n\n /* Sync */\n if (value < 1) {\n return this;\n }\n\n /* Set payload */\n this.actions.set(value);\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Buttons */\n initButtons(this);\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n CounterRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n hidden: false,\n error: false,\n valid: false,\n value: 0,\n disabled: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.RESET_STATUS:\n return {\n ...state,\n error: false,\n valid: false\n };\n case types.SET_ERROR:\n return {\n ...state,\n error: true,\n valid: false\n };\n case types.SET_VALID:\n return {\n ...state,\n error: false,\n valid: true\n };\n case types.INCREMENT:\n return {\n ...state,\n value: +state.value + 1\n };\n case types.DECREMENT:\n return {\n ...state,\n value: +state.value - 1\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: false\n };\n case types.DISABLE:\n return {\n ...state,\n disabled: true\n };\n case types.SET:\n return {\n ...state,\n value: +action.payload\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CounterRxjs > Client > Buttons\n ========================================================================== */\n\n/* Modules */\nconst { filter } = require('rxjs/operators');\n\nconst Button = require('../../../../button-rxjs/client/js');\n\nconst { actions, types } = require('../store/actions');\n\nconst { updateUI } = require('../ui');\n\nconst configuration = require('../config');\n\n/* Init */\nfunction initButtons(instance) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n /* Increment */\n panel.increment = Button(\n `${selector} [data-component='ButtonRxjs'][data-type='${configuration().type.increment}']`\n );\n\n /* Decrement */\n panel.decrement = Button(\n `${selector} [data-component='ButtonRxjs'][data-type='${configuration().type.decrement}']`\n );\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n increment: () => instance.store.dispatch(actions.increment()),\n decrement: () => instance.store.dispatch(actions.decrement())\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n increment: instance.store.subscribe((state, action) => {\n if (action.type !== types.INCREMENT) return;\n\n /* Data */\n const { value } = state.counter;\n\n /* Update UI */\n updateUI(value, instance);\n }),\n decrement: instance.store.subscribe((state, action) => {\n if (action.type !== types.DECREMENT) return;\n\n /* Data */\n const { value } = state.counter;\n\n /* Update UI */\n updateUI(value, instance);\n })\n };\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n increment: instance.increment.events.click$\n .pipe(\n filter(() => {\n /* Data */\n const { disabled } = instance.store.select('counter');\n\n if (disabled) {\n return false;\n }\n\n return true;\n })\n )\n .subscribe(() => {\n /* Dispatch action */\n instance.actions.increment();\n }),\n decrement: instance.decrement.events.click$\n .pipe(\n filter(() => {\n /* Data */\n const { disabled } = instance.store.select('counter');\n\n if (disabled) {\n return false;\n }\n\n return true;\n })\n )\n .subscribe(() => {\n /* Dispatch action */\n instance.actions.decrement();\n })\n };\n\n return this;\n}\n\n/* Destroy */\nfunction destroyButtons(instance) {\n const panel = instance;\n\n /* References */\n instance.increment.actions.destroy();\n delete panel.increment;\n\n instance.decrement.actions.destroy();\n delete panel.decrement;\n\n /* Actions */\n delete panel.actions.increment;\n delete panel.actions.decrement;\n\n /* Reactions */\n instance.reactions.increment.unsubscribe();\n delete panel.reactions.increment;\n\n instance.reactions.decrement.unsubscribe();\n delete panel.reactions.decrement;\n\n /* Subscriptions */\n instance.subscriptions.increment.unsubscribe();\n delete panel.subscriptions.increment;\n\n instance.subscriptions.decrement.unsubscribe();\n delete panel.subscriptions.decrement;\n}\n\n/* Exports */\nmodule.exports = {\n initButtons,\n destroyButtons\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations\n ========================================================================== */\n\n/* Modules */\nconst { actions, types } = require('../../store/actions');\n\nconst { initInformation, addInformation, destroyInformation } = require('./information');\n\n/* Init */\nfunction initInformations(instance) {\n const panel = instance;\n\n /* Data */\n const { rooms } = instance.config.passengers;\n const { value } = rooms;\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n informations: instance.element.querySelector('[data-informations]')\n };\n\n /* Reference */\n panel.informations = [];\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n setInformation: payload => {\n return instance.store.dispatch(actions.setInformation(payload));\n }\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n addRoom: instance.store.subscribe((state, action) => {\n if (action.type !== types.ADD_ROOM) return;\n const index = state.data.baseIndexRooms;\n /* Add information */\n addInformation(instance, index);\n }),\n deleteRoom: instance.store.subscribe((state, action) => {\n if (action.type !== types.DELETE_ROOM) return;\n\n let index = state.data.rooms;\n\n if (action.payload === 0 || action.payload) {\n index = action.payload;\n }\n\n /* Destroy information */\n destroyInformation(instance, index);\n })\n };\n\n /* Init references */\n [...Array(value)].forEach((item, index) => initInformation(instance, index));\n}\n\n/* Destroy */\nfunction destroyInformations(instance) {\n const panel = instance;\n\n /* Reference */\n instance.informations.forEach(() => {\n destroyInformation(instance, instance.informations.length - 1, false);\n });\n\n delete panel.informations;\n\n /* Actions */\n delete panel.actions.setInformation;\n\n /* Reactions */\n instance.reactions.addRoom.unsubscribe();\n delete panel.reactions.addRoom;\n\n instance.reactions.deleteRoom.unsubscribe();\n delete panel.reactions.deleteRoom;\n\n /* Hooks */\n const { informations } = instance.hooks;\n\n /* Remove from DOM */\n informations.parentNode.removeChild(informations);\n delete panel.hooks.informations;\n}\n\n/* Exports */\nmodule.exports = {\n initInformations,\n destroyInformations\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { fromEvent } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\nconst InformationTemplate = require('../../../../../templates/passengers/informations/information');\n\nconst { initAges, destroyAges } = require('./ages');\nconst { initCustomerCard, destroyCustomerCard } = require('./customer-card');\nconst { initCustomerSurname, destroyCustomerSurname } = require('./customer-surname');\nconst { initDiscountCode, destroyDiscountCode } = require('./discount-code');\nconst { initHealthCare, destroyHealthCare } = require('./health-care');\nconst { initJustMarried, destroyJustMarried } = require('./just-married');\nconst { initPassengers, destroyPassengers } = require('./passengers');\nconst { initRemoveRoom, destroyRemoveRoom, addRemoveRoom } = require('./remove-room');\n\nconst configuration = require('../../../config');\n\n/* Create */\nfunction createInformation(instance, index) {\n /* Data */\n const { literals, context, passengers, multicabin } = instance.config;\n const { rooms } = instance.store.select('data');\n\n /* Template */\n const template = InformationTemplate(\n { index, ...passengers, rooms: { value: rooms }, multicabin },\n literals,\n context\n );\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Init */\nfunction initInformation(instance, index) {\n const panel = instance;\n\n /* Hooks */\n const { informations } = instance.hooks;\n\n /* Reference */\n const information = {\n element: informations.querySelector(`[data-information='${index}']`),\n index\n };\n\n panel.informations[index] = information;\n\n /* Passengers */\n initPassengers(instance, index);\n\n /* Ages */\n initAges(instance, index);\n\n /* Just Married */\n initJustMarried(instance, index);\n\n /* Health Care */\n initHealthCare(instance, index);\n\n /* Customer Card */\n initCustomerCard(instance, index);\n\n /* Customer Surname */\n initCustomerSurname(instance, index);\n\n /* Discount Code */\n initDiscountCode(instance, index);\n\n /* Remove Room */\n initRemoveRoom(instance, index);\n}\n\n/* Add */\nfunction addInformation(instance, index, animation = true) {\n /* Node */\n const node = createInformation(instance, index);\n\n /* Hooks */\n const { informations } = instance.hooks;\n\n /* Add to DOM */\n informations.appendChild(node);\n\n /**\n * Handle to control when we need to\n * animate and when not\n */\n const handleAdd = () => {\n /* Init */\n initInformation(instance, index);\n\n const { rooms } = instance.store.select('data');\n\n /* If rooms is 2, then we add remove room button to information 0 */\n if (rooms === 2) {\n const i = instance.informations.reduce((acc, cur) => {\n if (cur && acc === undefined) return cur.index;\n return acc;\n }, undefined);\n addRemoveRoom(instance, i);\n }\n };\n\n /**\n * We need to control when we are cleaning it\n * in a programatic way so the reference doesn't\n * desync with the current one\n */\n if (!animation) {\n handleAdd();\n\n return;\n }\n\n /* Disable rooms */\n instance.rooms.actions.disable();\n\n /* Init */\n fromEvent(node, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n /* Handle */\n handleAdd();\n\n /* Enable rooms */\n instance.rooms.actions.enable();\n });\n\n /* Animate */\n setTimeout(() => node.classList.add(configuration().css.isVisible), 50);\n}\n\n/* Destroy */\nfunction destroyInformation(instance, index, animation = true) {\n const { element } = instance.informations[index];\n\n const panel = instance;\n const { rooms } = instance.store.select('data');\n\n /**\n * Handle to control when we need to\n * animate and when not\n */\n const handleDestroy = () => {\n /* Passengers */\n destroyPassengers(instance, index);\n\n /* Ages */\n destroyAges(instance, index);\n\n /* Just Married */\n destroyJustMarried(instance, index);\n\n /* Health Care */\n destroyHealthCare(instance, index);\n\n /* Customer Card */\n destroyCustomerCard(instance, index);\n\n /* Customer Surname */\n destroyCustomerSurname(instance, index);\n\n /* Discount Code */\n destroyDiscountCode(instance, index);\n\n /* Remove Room */\n destroyRemoveRoom(instance, index);\n\n /* Remove from DOM */\n element.parentNode.removeChild(element);\n\n /* Reference */\n panel.informations[index] = undefined;\n\n if (rooms === 1) {\n const { information } = instance.informations.reduce((acc, cur) => {\n if (cur) {\n return cur;\n }\n\n return acc;\n }, {}).element.dataset;\n /* Remove Room */\n destroyRemoveRoom(instance, information);\n }\n\n updatePassengersLabels(instance);\n };\n\n /**\n * We need to control when we are cleaning it\n * in a programatic way so the reference doesn't\n * desync with the current one\n */\n if (!animation) {\n handleDestroy();\n\n return;\n }\n\n /* Disable rooms */\n instance.rooms.actions.disable();\n\n /* Init */\n fromEvent(element, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n /* Handle */\n handleDestroy();\n\n /* Enable rooms */\n instance.rooms.actions.enable();\n });\n\n /* Animate */\n setTimeout(() => element.classList.remove(configuration().css.isVisible), 50);\n}\n\nfunction updatePassengersLabels(instance) {\n instance.informations\n .filter(item => item)\n .map((item, index) => {\n const panel = item;\n panel.element.querySelector('[data-passenger-number]').innerText = index + 1;\n return item;\n });\n}\n\n/* Exports */\nmodule.exports = {\n initInformation,\n addInformation,\n destroyInformation\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Informations > Information\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst Ages = require('./ages');\nconst CustomerCard = require('./customer-card');\nconst CustomerSurname = require('./customer-surname');\nconst DiscountCode = require('./discount-code');\nconst HealthCare = require('./health-care');\nconst JustMarried = require('./just-married');\nconst Passengers = require('./passengers');\nconst RemoveRoom = require('./remove-room');\n\nconst configuration = require('../../../../client/js/config');\n\n/* Render label */\nconst buildLabel = (label, rooms, multicabin) => {\n if (!multicabin) {\n return label;\n }\n\n return `${label} ${rooms.value}`;\n};\n\n/**\n * CircuitContentCru template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Information(data, literals, context) {\n /* Data */\n const {\n index,\n rooms,\n multicabin,\n crudyn,\n isVisible = false,\n healthCare = false,\n customerCard = false,\n customerSurname = false,\n discountCode = false,\n hasRemoveRoom = index !== 0\n } = data;\n\n /* Literals */\n const { roomInfoLabel = '' } = literals;\n\n /* Template */\n return html(`\n
\n ${\n crudyn || multicabin\n ? `

${buildLabel(roomInfoLabel, rooms, multicabin)}

`\n : ''\n }\n
\n ${Passengers(data, literals, context)}\n ${Ages(data, literals, context)}\n ${JustMarried(literals, context)}\n ${HealthCare(healthCare, literals, context)}\n ${CustomerCard(customerCard, literals, context)}\n ${CustomerSurname(customerSurname, literals, context)}\n ${DiscountCode(discountCode, literals, context)}\n ${hasRemoveRoom ? RemoveRoom(context) : ''}\n
\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Informations > Information > Ages\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst Age = require('./age');\n\n/* Render ages */\nconst renderAges = (data, literals, context) => {\n /* Data */\n const { value = 2, age = {}, index } = data;\n\n /* Template */\n return html(\n [...Array(value)].map((item, jndex) => Age({ index, jndex, isVisible: true, ...age }, literals, context))\n );\n};\n\n/**\n * CircuitContentCru template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Ages(data, literals, context) {\n /* Template */\n return html(`\n
\n ${renderAges(data, literals, context)}\n
\n `);\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Informations > Information > Customer Card\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/template');\nconst InputCfg = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/config');\n\nconst configuration = require('../../../../../client/js/config');\n\n/**\n * CircuitContentCru template\n * @param {boolean} customer card\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function CustomerCard(customerCard, literals, context) {\n if (!customerCard) {\n return html('');\n }\n\n /* Literals */\n const { customerCardLabel = '' } = literals;\n\n /* Template */\n return Input(\n addStyle(\n addData(\n {\n label: customerCardLabel\n },\n {\n type: configuration().type.customerCard\n }\n ),\n [InputCfg().css.withBorder, configuration().css.isCustomerCard]\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Informations > Information > Customer Card\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/template');\nconst InputCfg = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/config');\n\nconst configuration = require('../../../../../client/js/config');\n\n/**\n * CircuitContentCru template\n * @param {boolean} customer surname\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function CustomerSurname(customerSurname, literals, context) {\n if (!customerSurname) {\n return html('');\n }\n\n /* Literals */\n const { customerSurnameLabel = 'Surname' } = literals;\n\n /* Template */\n return Input(\n addStyle(\n addData(\n {\n label: customerSurnameLabel\n },\n {\n type: configuration().type.customerSurname\n }\n ),\n [InputCfg().css.withBorder, configuration().css.isCustomerSurname, configuration().css.isHidden]\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Informations > Information > Discount Code\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/template');\nconst InputCfg = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/config');\n\nconst configuration = require('../../../../../client/js/config');\n\n/**\n * CircuitContentCru template\n * @param {boolean} discount code\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function DiscountCode(discountCode, literals, context) {\n if (!discountCode) {\n return html('');\n }\n\n /* Literals */\n const { discountCodeLabel = '' } = literals;\n\n /* Template */\n return Input(\n addStyle(\n addData(\n {\n label: discountCodeLabel\n },\n {\n type: configuration().type.discountCode\n }\n ),\n [InputCfg().css.withBorder, configuration().css.isDiscountCode]\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Informations > Information > Just Married\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/template');\nconst SelectCfg = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/config');\n\nconst configuration = require('../../../../../client/js/config');\n\n/**\n * CircuitContentCru template\n * @param {boolean} health care\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function HealthCare(healthCare, literals, context) {\n if (!healthCare) {\n return html('');\n }\n\n /* Literals */\n const { yesLabel = '', noLabel = '', healthCareLabel = '' } = literals;\n\n /* Template */\n return Select(\n addStyle(\n addData(\n {\n label: healthCareLabel,\n items: [\n { value: 0, label: noLabel, selected: true },\n { value: 1, label: yesLabel }\n ]\n },\n {\n type: configuration().type.healthCare\n }\n ),\n [SelectCfg().css.withBorder, configuration().css.isHealthCare]\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Informations > Information > Just Married\n ========================================================================== */\n\n/* Import modules */\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/template');\nconst SelectCfg = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/config');\n\nconst configuration = require('../../../../../client/js/config');\n\n/**\n * CircuitContentCru template\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function JustMarried(literals, context) {\n /* Literals */\n const { yesLabel = '', noLabel = '', justMarriedLabel = '' } = literals;\n\n /* Template */\n return Select(\n addStyle(\n addData(\n {\n label: justMarriedLabel,\n items: [\n { value: 0, label: noLabel, selected: true },\n { value: 1, label: yesLabel }\n ]\n },\n {\n type: configuration().type.justMarried\n }\n ),\n [SelectCfg().css.withBorder, configuration().css.isJustMarried]\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Templates > Passengers > Informations > Information > Passengers\n ========================================================================== */\n\n/* Import modules */\nconst { range } = require('@bluekiri/alexandria/helpers/array');\n\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/template');\nconst SelectCfg = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/config');\n\nconst configuration = require('../../../../../client/js/config');\n\n/**\n * CircuitContentCru template\n * @param {object} data Object containing the data model for this component.\n * @param {object} literals\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Passengers(data, literals, context) {\n /* Data */\n const { min = 1, max = 9, value = 2 } = data;\n\n /* Literals */\n const { passengersLabel } = literals;\n\n return Select(\n addStyle(\n addData(\n {\n label: passengersLabel,\n items: range(min, max).map(item => ({\n label: item,\n value: +item,\n selected: +item === +value\n }))\n },\n {\n type: configuration().type.passengers\n }\n ),\n [SelectCfg().css.withBorder, configuration().css.isPassengers]\n ),\n context\n );\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > Ages\n ========================================================================== */\n\n/* Modules */\nconst SelectAct = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\n\nconst { initAge, destroyAge, addAge } = require('./age');\n\n/* Init */\nfunction initAges(instance, index) {\n const panel = instance;\n\n /* Data */\n const { value = 2 } = instance.config.passengers;\n\n /* Hooks */\n panel.hooks = {\n ...instance.hooks,\n [`ages-${index}`]: instance.informations[index].element.querySelector('[data-ages]')\n };\n\n /* Reference */\n panel.informations[index] = {\n ...instance.informations[index],\n ages: []\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`change-passengers-${index}`]: instance.informations[index].passengers.store.subscribe((state, action) => {\n if (action.type !== SelectAct.types.SELECT_OPTION) return;\n\n /* Data */\n const { ages } = instance.informations[index];\n const difference = ages.length - +action.payload.value;\n\n /* Changed passengers */\n\n /* Add ages */\n if (difference < 0) {\n [...Array(Math.abs(difference))].forEach(() => {\n /* Add */\n addAge(instance, { index, jndex: instance.informations[index].ages.length });\n });\n\n return;\n }\n\n [...Array(difference)].forEach(() => {\n /* Destroy */\n destroyAge(instance, { index, jndex: instance.informations[index].ages.length - 1 });\n });\n })\n };\n\n /* Prepare store */\n instance.actions.setInformation({ index, information: { ages: [...Array(value)].map(() => 0) } });\n\n /* Init references */\n [...Array(value)].forEach((item, jndex) => initAge(instance, { index, jndex }));\n}\n\n/* Destroy */\nfunction destroyAges(instance, index) {\n const panel = instance;\n\n /* Reactions */\n instance.reactions[`change-passengers-${index}`].unsubscribe();\n delete panel.reactions[`change-passengers-${index}`];\n\n /* Reference */\n instance.informations[index].ages.forEach(() => {\n destroyAge(instance, { index, jndex: instance.informations[index].ages.length - 1 });\n });\n\n delete panel.informations[index].ages;\n\n /* Hooks */\n const { [`ages-${index}`]: ages } = instance.hooks;\n\n /* Remove from DOM */\n ages.parentNode.removeChild(ages);\n delete panel.hooks.ages;\n}\n\n/* Exports */\nmodule.exports = {\n initAges,\n destroyAges\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > Ages > Age\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js');\nconst SelectAct = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\n\nconst AgeTemplate = require('../../../../../../../templates/passengers/informations/information/ages/age');\n\nconst configuration = require('../../../../../config');\n\n/* Create */\nfunction createAge(instance, { index, jndex }) {\n /* Data */\n const { literals, context, passengers } = instance.config;\n const { age } = passengers;\n\n /* Template */\n const template = AgeTemplate({ index, jndex, ...age }, literals, context);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Init */\nfunction initAge(instance, { index, jndex }) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n const base = `${selector} [data-information='${index}']`;\n\n /* Reference */\n const reference = Select(\n `${base} [data-component='SelectRxjs'][data-type='${configuration().type.age}-${index}-${jndex}']`,\n {\n choices: {\n searchEnabled: false\n }\n }\n );\n\n panel.informations[index].ages = [...instance.informations[index].ages, reference];\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`change-age-${index}-${jndex}`]: reference.store.subscribe((state, action) => {\n if (action.type !== SelectAct.types.SELECT_OPTION) return;\n\n const { value } = action.payload;\n const { informations } = instance.store.select('data');\n const { ages, passengers } = informations[index];\n\n /* Sync */\n instance.actions.setInformation({\n index,\n information: {\n ages: ages.map((age, kndex) => {\n if (jndex !== kndex) {\n return age;\n }\n\n return value;\n })\n }\n });\n\n const { ExcludedBabies } = instance.config;\n if (ExcludedBabies === 1 || ExcludedBabies) {\n instance.actions[`change-passengers-${index}`](passengers);\n }\n })\n };\n\n // /* Sync */\n const { value } = reference.store.select('select').value;\n const { ages } = instance.store.select('data').informations[index] || { ages: [0, 0] };\n\n instance.actions.setInformation({\n index,\n information: {\n ages: ages.map((item, kndex) => {\n if (jndex !== kndex) {\n return item;\n }\n\n return value;\n })\n }\n });\n}\n\n/* Add */\nfunction addAge(instance, { index, jndex }) {\n /* Node */\n const node = createAge(instance, { index, jndex });\n\n /* Hooks */\n const { [`ages-${index}`]: ages } = instance.hooks;\n\n /* Add to DOM */\n ages.appendChild(node);\n\n /* Init */\n initAge(instance, { index, jndex });\n}\n\n/* Destroy */\nfunction destroyAge(instance, { index, jndex }) {\n const panel = instance;\n\n /* Reactions */\n instance.reactions[`change-age-${index}-${jndex}`].unsubscribe();\n delete panel.reactions[`change-age-${index}-${jndex}`];\n\n /* Reference */\n instance.informations[index].ages[jndex].actions.destroy();\n panel.informations[index].ages = instance.informations[index].ages.filter((age, kndex) => kndex !== jndex);\n}\n\n/* Exports */\nmodule.exports = {\n initAge,\n destroyAge,\n addAge\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > Customer Card\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\nconst InputAct = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/actions');\n\nconst configuration = require('../../../../config');\n\n/* Init */\nfunction initCustomerCard(instance, index) {\n /* Data */\n const { customerCard = false } = instance.config.passengers;\n\n if (!customerCard) {\n return;\n }\n\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n const base = `${selector} [data-information='${index}']`;\n\n /* Reference */\n const reference = Input(`${base} [data-component='InputRxjs'][data-type='${configuration().type.customerCard}']`);\n\n panel.informations[index] = {\n ...instance.informations[index],\n customerCard: reference\n };\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n [`customerCardKeyDown${index}`]: fromEvent(reference.hooks.input, 'keyup').subscribe(() => {\n /* Active surname field */\n if (instance.informations[index].customerSurname) {\n instance.informations[index].customerSurname.actions.display();\n\n if (reference.hooks.input.value === '') {\n instance.informations[index].customerSurname.actions.hide();\n panel.informations[index].customerSurname.hooks.input.value = '';\n }\n }\n })\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`change-customer-card-${index}`]: reference.store.subscribe((state, action) => {\n if (action.type !== InputAct.types.CHANGE_VALUE) return;\n\n const value = action.payload;\n\n /* Sync */\n instance.actions.setInformation({ index, information: { customerCard: value } });\n })\n };\n\n /* Sync */\n const { value } = reference.store.select('input');\n\n instance.actions.setInformation({ index, information: { customerCard: value } });\n}\n\n/* Destroy */\nfunction destroyCustomerCard(instance, index) {\n /* Data */\n const { customerCard = false } = instance.config.passengers;\n\n if (!customerCard) {\n return;\n }\n\n const panel = instance;\n\n /* Reference */\n instance.informations[index].customerCard.actions.destroy();\n delete panel.informations[index].customerCard;\n\n /* Reactions */\n instance.reactions[`change-customer-card-${index}`].unsubscribe();\n delete panel.reactions[`change-customer-card-${index}`];\n}\n\n/* Exports */\nmodule.exports = {\n initCustomerCard,\n destroyCustomerCard\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > Customer Card\n ========================================================================== */\n\n/* Modules */\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\nconst InputAct = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/actions');\n\nconst configuration = require('../../../../config');\n\n/* Init */\nfunction initCustomerSurname(instance, index) {\n /* Data */\n const { customerSurname = false } = instance.config.passengers;\n\n if (!customerSurname) {\n return;\n }\n\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n const base = `${selector} [data-information='${index}']`;\n\n /* Reference */\n const reference = Input(\n `${base} [data-component='InputRxjs'][data-type='${configuration().type.customerSurname}']`\n );\n\n panel.informations[index] = {\n ...instance.informations[index],\n customerSurname: reference\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`change-customer-surname-${index}`]: reference.store.subscribe((state, action) => {\n if (action.type !== InputAct.types.CHANGE_VALUE) return;\n\n const value = action.payload;\n\n /* Sync */\n instance.actions.setInformation({ index, information: { customerSurname: value } });\n })\n };\n\n /* Sync */\n const { value } = reference.store.select('input');\n\n instance.actions.setInformation({ index, information: { customerSurname: value } });\n}\n\n/* Destroy */\nfunction destroyCustomerSurname(instance, index) {\n /* Data */\n const { customerSurname = false } = instance.config.passengers;\n\n if (!customerSurname) {\n return;\n }\n\n const panel = instance;\n\n /* Reference */\n instance.informations[index].customerSurname.actions.destroy();\n delete panel.informations[index].customerSurname;\n\n /* Reactions */\n instance.reactions[`change-customer-surname-${index}`].unsubscribe();\n delete panel.reactions[`change-customer-surname-${index}`];\n}\n\n/* Exports */\nmodule.exports = {\n initCustomerSurname,\n destroyCustomerSurname\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > Discount Code\n ========================================================================== */\n\n/* Modules */\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\nconst InputAct = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js/store/actions');\n\nconst configuration = require('../../../../config');\n\n/* Init */\nfunction initDiscountCode(instance, index) {\n /* Data */\n const { discountCode = false } = instance.config.passengers;\n\n if (!discountCode) {\n return;\n }\n\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n const base = `${selector} [data-information='${index}']`;\n\n /* Reference */\n const reference = Input(`${base} [data-component='InputRxjs'][data-type='${configuration().type.discountCode}']`);\n\n panel.informations[index] = {\n ...instance.informations[index],\n discountCode: reference\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`change-discount-code-${index}`]: reference.store.subscribe((state, action) => {\n if (action.type !== InputAct.types.CHANGE_VALUE) return;\n\n const value = action.payload;\n\n /* Sync */\n instance.actions.setInformation({ index, information: { discountCode: value } });\n })\n };\n\n /* Sync */\n const { value } = reference.store.select('input');\n\n instance.actions.setInformation({ index, information: { discountCode: value } });\n}\n\n/* Destroy */\nfunction destroyDiscountCode(instance, index) {\n /* Data */\n const { discountCode = false } = instance.config.passengers;\n\n if (!discountCode) {\n return;\n }\n\n const panel = instance;\n\n /* Reference */\n instance.informations[index].discountCode.actions.destroy();\n delete panel.informations[index].discountCode;\n\n /* Reactions */\n instance.reactions[`change-discount-code-${index}`].unsubscribe();\n delete panel.reactions[`change-discount-code-${index}`];\n}\n\n/* Exports */\nmodule.exports = {\n initDiscountCode,\n destroyDiscountCode\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > Health Care\n ========================================================================== */\n\n/* Modules */\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js');\nconst SelectAct = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\n\nconst configuration = require('../../../../config');\n\n/* Init */\nfunction initHealthCare(instance, index) {\n /* Data */\n const { healthCare = false } = instance.config.passengers;\n\n if (!healthCare) {\n return;\n }\n\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n const base = `${selector} [data-information='${index}']`;\n\n /* Reference */\n const reference = Select(`${base} [data-component='SelectRxjs'][data-type='${configuration().type.healthCare}']`, {\n choices: {\n searchEnabled: false\n }\n });\n\n panel.informations[index] = {\n ...instance.informations[index],\n healthCare: reference\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`change-health-care-${index}`]: reference.store.subscribe((state, action) => {\n if (action.type !== SelectAct.types.SELECT_OPTION) return;\n\n const { value } = action.payload;\n\n /* Sync */\n instance.actions.setInformation({ index, information: { healthCare: value } });\n })\n };\n\n /* Sync */\n const { value } = reference.store.select('select').value;\n\n instance.actions.setInformation({ index, information: { healthCare: value } });\n}\n\n/* Destroy */\nfunction destroyHealthCare(instance, index) {\n /* Data */\n const { healthCare = false } = instance.config.passengers;\n\n if (!healthCare) {\n return;\n }\n\n const panel = instance;\n\n /* Reference */\n instance.informations[index].healthCare.actions.destroy();\n delete panel.informations[index].healthCare;\n\n /* Reactions */\n instance.reactions[`change-health-care-${index}`].unsubscribe();\n delete panel.reactions[`change-health-care-${index}`];\n}\n\n/* Exports */\nmodule.exports = {\n initHealthCare,\n destroyHealthCare\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > Just Married\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js');\nconst SelectAct = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\n\nconst { addTooltip, destroyTooltip } = require('../../../../tooltip');\n\nconst { TOOLTIP_JUST_MARRIED } = require('../../../../../../constants/tooltip');\n\nconst configuration = require('../../../../config');\n\n/* Init */\nfunction initJustMarried(instance, index) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n const base = `${selector} [data-information='${index}']`;\n\n /* Reference */\n const reference = Select(`${base} [data-component='SelectRxjs'][data-type='${configuration().type.justMarried}']`, {\n choices: {\n searchEnabled: false\n }\n });\n\n panel.informations[index] = {\n ...instance.informations[index],\n justMarried: reference\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`change-just-married-${index}`]: reference.store.subscribe((state, action) => {\n if (action.type !== SelectAct.types.SELECT_OPTION) return;\n\n const { value } = action.payload;\n\n /* Sync */\n instance.actions.setInformation({ index, information: { justMarried: value } });\n\n if (value === 1) {\n addTooltip(instance, { type: TOOLTIP_JUST_MARRIED }, reference.element);\n\n fromEvent(instance.tooltip.element.querySelector('[data-close]'), 'click')\n .pipe(take(1))\n .subscribe(() => destroyTooltip(instance, { type: TOOLTIP_JUST_MARRIED }));\n }\n })\n };\n\n /* Sync */\n const { value } = reference.store.select('select').value;\n\n instance.actions.setInformation({ index, information: { justMarried: value } });\n}\n\n/* Destroy */\nfunction destroyJustMarried(instance, index) {\n const panel = instance;\n\n /* Reference */\n instance.informations[index].justMarried.actions.destroy();\n delete panel.informations[index].justMarried;\n\n /* Reactions */\n instance.reactions[`change-just-married-${index}`].unsubscribe();\n delete panel.reactions[`change-just-married-${index}`];\n}\n\n/* Exports */\nmodule.exports = {\n initJustMarried,\n destroyJustMarried\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > Passengers\n ========================================================================== */\n\n/* Modules */\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js');\nconst SelectAct = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\n\nconst { actions } = require('../../../../store/actions');\n\nconst configuration = require('../../../../config');\n\n/* Init */\nfunction initPassengers(instance, index) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n const base = `${selector} [data-information='${index}']`;\n\n /* Reference */\n const reference = Select(`${base} [data-component='SelectRxjs'][data-type='${configuration().type.passengers}']`, {\n choices: {\n searchEnabled: false\n }\n });\n\n panel.informations[index] = {\n ...instance.informations[index],\n passengers: reference\n };\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n [`change-passengers-${index}`]: payload => {\n return instance.store.dispatch(actions.changePassengers({ index, passengers: payload }));\n }\n };\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`select-passengers-${index}`]: reference.store.subscribe((state, action) => {\n if (action.type !== SelectAct.types.SELECT_OPTION) return;\n\n const { value } = action.payload;\n\n /* Sync */\n instance.actions[`change-passengers-${index}`](value);\n })\n };\n\n /* Sync */\n const { value } = reference.store.select('select').value;\n\n instance.actions.setInformation({ index, information: { passengers: value } });\n}\n\n/* Destroy */\nfunction destroyPassengers(instance, index) {\n const panel = instance;\n\n /* Actions */\n delete panel.actions[`change-passengers-${index}`];\n\n /* Reactions */\n instance.reactions[`select-passengers-${index}`].unsubscribe();\n delete panel.reactions[`select-passengers-${index}`];\n\n /* Reference */\n instance.informations[index].passengers.actions.destroy();\n delete panel.informations[index].passengers;\n}\n\n/* Exports */\nmodule.exports = {\n initPassengers,\n destroyPassengers\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Informations > Information > RemoveRoom\n ========================================================================== */\n\n/* Modules */\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\nconst { updateUI } = require('@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/ui');\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst removeRoom = require('../../../../../../templates/passengers/informations/information/remove-room');\n\nconst configuration = require('../../../../config');\n\n/* Init */\nfunction initRemoveRoom(instance, index) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n const base = `${selector} [data-information='${index}']`;\n\n /* Reference */\n const reference = Button(`${base} [data-component='ButtonRxjs'][data-type='${configuration().type.removeRoom}']`);\n\n if (!reference) return;\n\n panel.informations[index] = {\n ...instance.informations[index],\n removeRoom: reference\n };\n\n panel.subscriptions = {\n ...instance.subscriptions,\n [`click-remove-room-${index}`]: reference.events.click$.subscribe(() => {\n reference.actions.disable();\n panel.actions.deleteRoom(index);\n\n const { rooms } = panel.store.select('data');\n updateUI(rooms, panel.rooms);\n panel.rooms.actions.set(rooms);\n })\n };\n}\n\n/* Create */\nfunction createRemoveRoom(instance) {\n const { context } = instance.config;\n\n /* Render HTML */\n const template = removeRoom(context);\n\n /* Return node */\n return toNode(template)[0];\n}\n\n/* Add */\nfunction addRemoveRoom(instance, index = 0) {\n const panel = instance;\n\n /* Node */\n const node = createRemoveRoom(instance);\n\n /* Get wrapper */\n panel.informations[index].element.querySelector('[data-wrapper]').appendChild(node);\n\n /* Init remove room */\n initRemoveRoom(instance, index);\n}\n\n/* Destroy */\nfunction destroyRemoveRoom(instance, index) {\n const panel = instance;\n\n /* Reference */\n instance.informations[index].removeRoom.actions.destroy();\n delete panel.informations[index].removeRoom;\n\n /* Subscriptions */\n instance.subscriptions[`click-remove-room-${index}`].unsubscribe();\n delete panel.subscriptions[`click-remove-room-${index}`];\n}\n\n/* Exports */\nmodule.exports = {\n initRemoveRoom,\n addRemoveRoom,\n destroyRemoveRoom\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Nights\n ========================================================================== */\n\n/* Modules */\nconst { actions } = require('../../store/actions');\n\nconst { initNight } = require('./nights');\n\n// const configuration = require('../../config');\n\n/* Init */\nfunction initNights(instance) {\n /* Data */\n const panel = instance;\n\n /* Actions */\n panel.actions = {\n ...instance.actions,\n setNights: payload => {\n return instance.store.dispatch(actions.setNights(payload));\n }\n };\n\n /* Set nights */\n panel.nights = [];\n\n /* Init Night */\n const { nights = [] } = instance.config.passengers;\n\n /* Sync and init */\n nights.forEach((item, index) => initNight(instance, { ...item, index }));\n}\n\n/* Destroy */\nfunction destroyNights(instance) {\n /* Data */\n const panel = instance;\n\n /* Reference */\n instance.nights.actions.destroy();\n delete panel.nights;\n\n /* Actions */\n delete panel.actions.setNights;\n\n /* Reactions */\n instance.reactions.setNights.unsubscribe();\n delete panel.reactions.setNights;\n}\n\n/* Exports */\nmodule.exports = {\n initNights,\n destroyNights\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Passengers > Night\n ========================================================================== */\n\n/* Modules */\nconst Counter = require('@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js');\nconst CounterAct = require('@bluekiri/alexandria-contrib-components/components/counter-rxjs/client/js/store/actions');\n\nconst { getDepartures } = require('../../../categories');\n\nconst getCategoryConstants = require('../../../categories/constants');\n\nconst configuration = require('../../../config');\n\n/* Init */\nfunction initNight(instance, { value, id, index }) {\n /* Data */\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n /* Config */\n const { crudyn } = instance.config;\n\n /* Reference */\n const refernece = Counter(\n `${selector} [data-component='CounterRxjs'][data-type='${configuration().type.nights}-${index}']`\n );\n /* Add counter to array of counter */\n panel.nights = [...panel.nights, refernece];\n\n /* Reactions */\n panel.reactions = {\n ...instance.reactions,\n [`increment-${index}`]: refernece.store.subscribe((state, action) => {\n if (action.type !== CounterAct.types.INCREMENT) return;\n\n /* Dispatch */\n instance.actions.setNights({ value: state.counter.value, index });\n\n if (!crudyn) return;\n\n /* Data */\n const { nights, origin } = instance.store.select('data');\n\n /* Get constant with params name to send */\n const { ALTERNATIVE_NIGHTS, ORIGIN } = getCategoryConstants('crudyn');\n\n /* Values */\n const values = {\n [ALTERNATIVE_NIGHTS]: Object.values(nights)\n .map(item => `${item.id}-${item.value}`)\n .join('_'),\n [ORIGIN]: origin\n };\n\n getDepartures(instance, values);\n }),\n [`decrement-${index}`]: refernece.store.subscribe((state, action) => {\n if (action.type !== CounterAct.types.DECREMENT) return;\n\n /* Dispatch */\n instance.actions.setNights({ value: state.counter.value, index });\n\n if (!crudyn) return;\n\n /* Data */\n const { nights, origin } = instance.store.select('data');\n\n /* Get constant with params name to send */\n const { ALTERNATIVE_NIGHTS, ORIGIN } = getCategoryConstants('crudyn');\n\n /* Values */\n const values = {\n [ALTERNATIVE_NIGHTS]: Object.values(nights)\n .map(item => `${item.id}-${item.value}`)\n .join('_'),\n [ORIGIN]: origin\n };\n\n getDepartures(instance, values);\n })\n };\n\n /* Sync store */\n instance.actions.setNights({ value, id, index });\n}\n\n/* Destroy */\nfunction destroyNight(instance, index) {\n /* Data */\n const panel = instance.nights[index];\n\n /* Reference */\n instance.nights[index].actions.destroy();\n delete panel.nights[index];\n\n /* Reactions */\n instance.reactions[`increment-${index}`].unsubscribe();\n delete panel.reactions[`increment-${index}`];\n\n instance.reactions[`decrement-${index}`].unsubscribe();\n delete panel.reactions[`decrement-${index}`];\n}\n\n/* Exports */\nmodule.exports = {\n initNight,\n destroyNight\n};\n","/* ==========================================================================\n CircuitContentCru > Client > Modal > Index\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { fromEvent, of } = require('rxjs');\nconst { map } = require('rxjs/operators');\n\n/* Helpers */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\n/* Components client and tempalte */\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\nconst ModalRxjsTemplate = require('@bluekiri/alexandria-contrib-components/components/modal-rxjs/template');\nconst ModalRxjs = require('@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js');\nconst BannersBody = require('../../../templates/banners/modal');\n\n/* Config */\nconst config = require('../config');\n\n/* Init modal */\nfunction initModal(instance) {\n /* Instance */\n const panel = instance;\n\n /* Add subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n banner: of(...instance.hooks.modalBanners)\n .pipe(map(item => fromEvent(item, 'click')))\n .subscribe(obs => {\n obs.subscribe(e => {\n const { banner } = e.currentTarget.dataset;\n /* Dispatch action */\n addModal(instance, +banner);\n });\n })\n };\n}\n\n/* Create Modal */\nfunction createModal(instance, index) {\n /* Config */\n const { context, literals, banners } = instance.config;\n\n /* Data */\n const { modalBanner } = banners[index];\n\n /* Template */\n const template = html(\n `${ModalRxjsTemplate(\n addStyle(\n addData(\n {\n title: literals.cabinModalHeader,\n body: BannersBody(modalBanner, context)\n },\n { type: config().type.modal }\n ),\n [config().css.modal]\n ),\n context\n )}`\n );\n\n /* Node */\n const node = toNode(template)[0];\n\n return node;\n}\n/* Add modal */\nfunction addModal(instance, index) {\n const panel = instance;\n\n const node = createModal(instance, index);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Init modal */\n panel.modal = ModalRxjs(`[data-component=\"ModalRxjs\"][data-type=\"${config().type.modal}\"]`);\n\n /* Init image modal */\n panel.imageModal = Image(`[data-component=\"ImageRxjs\"][data-type=\"${config().type.modalImage}\"]`);\n\n /* Display modal */\n panel.modal.actions.display();\n\n /* Subscription */\n panel.subscriptions = {\n ...instance.subscriptions,\n closeModal: of(instance.modal.close.events.click$, instance.modal.events.keyup$)\n .pipe(map(item => item))\n .subscribe(item => {\n item.subscribe(() => {\n destroyModal(instance);\n });\n })\n };\n}\n\n/* Close modal */\nfunction destroyModal(instance) {\n const panel = instance;\n\n panel.subscriptions.closeModal.unsubscribe();\n panel.modal.actions.hide();\n panel.modal.element.parentNode.removeChild(panel.modal.element);\n\n delete panel.modal;\n}\n\nmodule.exports = {\n initModal,\n addModal,\n destroyModal\n};\n","/* ==========================================================================\n CircuitContentCru > Client > ModalBody > Index\n ========================================================================== */\nconst { html } = require('common-tags');\n\nconst { addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/template');\n\nconst configuration = require('../../../client/js/config');\n\nmodule.exports = function Template(data = {}, context) {\n /* Data */\n const { image = false, imageAlt = '', items = [] } = data;\n\n const { markdown } = ViewHelpers(context);\n\n return html(`
\n ${items\n .map(\n item =>\n `${item.title ? `

${item.title}

` : ''}${\n item.description\n ? `

${markdown(item.description)}

`\n : ''\n }`\n )\n .join('')}\n
\n ${image ? Image(addData({ src: image, alt: imageAlt }, { type: configuration().type.modalImage }), context) : ''}`);\n};\n","/* ==========================================================================\n MainRequest > Client > Button Important Info\n ========================================================================== */\n\n/* Modules */\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst config = require('../config');\n\n/* Init */\nfunction initBtnImportantInfo(instance) {\n const panel = instance;\n\n const { selector } = instance;\n\n panel.btnImpInfo = Button(\n `${selector} [data-component=\"ButtonRxjs\"][data-type=\"${config().type.importantInfoBtn}\"]`\n );\n\n panel.importantInfo = instance.element.querySelector(`[data-component=\"ImportantInfo\"]`);\n\n if (instance.btnImpInfo) {\n panel.btnImpInfo.subscriptions = {\n ...instance.btnImpInfo.subscriptions,\n clickConfig: instance.btnImpInfo.events.click$.subscribe(() => {\n instance.floatingHeader.actions.scrollTo('ImportantInfo');\n })\n };\n }\n}\n\n/* Exports */\nmodule.exports = {\n initBtnImportantInfo\n};\n","/* ==========================================================================\n HeaderByl > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst ImageClient = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\nconst Modal = require('@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js');\nconst OriginListClient = require('@bluekiri/alexandria-contrib-components/components/origin-list/client/js');\n\nconst prototype = require('./prototype');\n\nconst config = require('./config');\n\n/**\n * HeaderByl component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function HeaderByl(selector = '[data-component=HeaderByl]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n origins: document.querySelector('[data-origins]'),\n languages: document.querySelector('[data-languages]'),\n nav: document.querySelector('[data-nav-menu]')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n\n return result;\n })()\n };\n\n /* Images */\n instance.images = initImages(selector, instance, configuration);\n\n /* Init modal */\n instance.modal = Modal(`[data-component=\"ModalRxjs\"][data-type=\"${config().type.modal}\"]`);\n\n /* Init Origin list */\n instance.originList = OriginListClient(`[data-component=\"OriginList\"]`);\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n return {};\n};\n\nfunction initImages(selector, instance, configuration) {\n const images = {\n flag: ImageClient(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.logoFlag}\"]`, {\n ...configuration.flag\n }),\n logoLogi: ImageClient(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.logoLogi}\"]`, {\n ...configuration.logoLogi\n }),\n companyLogo: ImageClient(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.companyLogo}\"]`, {\n ...configuration.companyLogo\n }),\n secondaryImgs: [\n ...instance.element.querySelectorAll(\n `${selector} [data-component=\"ImageRxjs\"][data-type^=\"${config().type.secondaryImg}\"]`\n )\n ].map((item, index) =>\n ImageClient(\n `${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.secondaryImg}-${index}\"]`,\n {\n ...configuration.secondaryImg\n }\n )\n )\n };\n\n return images;\n}\n","/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst prototype = require('./prototype');\nconst config = require('./config');\n\nmodule.exports = function OriginListClient(selector = '[data-component=\"OriginList\"]', configuration = {}) {\n if (elementExist(selector)) {\n const instance = Object.create(prototype);\n\n instance.element = document.querySelector(selector);\n\n instance.config = { ...config(), ...instance.getConfig(), ...configuration };\n\n instance.id = instance.element.dataset.id || randomId('origin-list');\n\n if (instance.config.init) instance.initialize();\n\n return instance;\n }\n};\n","const $ = require('jquery/dist/jquery');\n\nconst buildRequest = function fn(configuration, instance) {\n if (configuration.session) {\n return JSON.stringify({ SessionCode: configuration.session, [configuration.parameterName]: instance.value });\n }\n return JSON.stringify({ [configuration.parameterName]: instance.value, Source: 900 });\n};\n\nconst buildFinalUrl = () => {\n const splittedString = window.location.search.split('&');\n if (splittedString.length > 0) {\n if (splittedString[0] === '') return '';\n\n let newQuery = splittedString\n .map(str => {\n if (str.indexOf('origen') !== -1 || str.indexOf('origin') !== -1) return false;\n return str;\n })\n .filter(str => str !== false)\n .join('&');\n\n if (newQuery[0] && newQuery[0] !== '?') {\n if (newQuery[0] === '&') newQuery = `?${newQuery.substring(1, newQuery.length)}`;\n else newQuery = `?${newQuery.substring(0, newQuery.length)}`;\n }\n return newQuery;\n }\n return ``;\n};\n\nconst executeAjax = function fn(instance) {\n const configuration = instance.config;\n\n // Exit in case we dont have the information we need\n if (!(configuration.endpoint && configuration.parameterName && configuration.verb)) return false;\n\n const verb = configuration.verb.toLowerCase();\n\n setTimeout(() => {\n let promise;\n if (verb === 'post') {\n promise = $.post({\n url: configuration.endpoint,\n data: buildRequest(configuration, instance),\n contentType: 'application/json; charset=utf-8',\n withCredentials: true\n });\n } else if (verb === 'get') {\n promise = $.get({\n url: configuration.endpoint,\n data: buildRequest(configuration, instance),\n contentType: 'application/json; charset=utf-8',\n withCredentials: true\n });\n }\n\n if (promise) {\n promise\n .done(() => {\n window.location.href = window.location.origin + window.location.pathname + buildFinalUrl();\n })\n .fail(() => {\n console.error('Oooopsss ... An error has occurred to change the origin :(');\n });\n }\n }, 1);\n\n return true;\n};\n\nmodule.exports = {\n getConfig: function fn() {\n let prototypeConfiguration = {};\n\n if (this.element) {\n const configuration = this.element.dataset.config;\n\n if (configuration) {\n prototypeConfiguration = JSON.parse(configuration);\n this.element.dataset.config = '';\n }\n }\n\n return prototypeConfiguration;\n },\n get: function fn() {\n return this.value || '';\n },\n setCookieAutoOrigin: function fn() {\n if (this.config && this.config.autoOrigin) {\n document.cookie = `${this.config.autoOrigin.ck_name}=${this.config.autoOrigin.ck_value};path=/`;\n }\n },\n onClickOrigin: function fn(e) {\n if (e.target.parentElement === this.element) {\n const newSelectedOrigin = e.target;\n\n if (newSelectedOrigin === this.selectedOrigin) return false;\n\n this.setCookieAutoOrigin();\n\n // --> We have a selected origin?\n if (this.selectedOrigin) {\n // --> Delete current origin to set the new\n this.selectedOrigin.classList.remove(this.config.selectedClass);\n const icon = this.selectedOrigin.lastChild;\n\n if (icon && icon.nodeName === 'SPAN') {\n newSelectedOrigin.appendChild(icon);\n }\n }\n // --> Set the new origin\n this.selectedOrigin = newSelectedOrigin;\n this.selectedOrigin.classList.add(this.config.selectedClass);\n this.value = this.selectedOrigin.attributes[this.config.originOption].value;\n\n // --> Try to set the new origin in session using an API\n executeAjax(this);\n\n return true;\n }\n return false;\n },\n bindEvents: function bindEvents() {\n this.onClickOrigin = this.onClickOrigin.bind(this);\n },\n addEventListener: function fn() {\n this.bindEvents();\n this.element.addEventListener('click', this.onClickOrigin);\n\n return this;\n },\n removeEventListener: function fn() {\n this.element.removeEventListener('click', this.onClickOrigin);\n\n return this;\n },\n initialize: function fn() {\n const selectedOrigin = this.element.querySelector(`.${this.config.selectedClass}`);\n\n if (!selectedOrigin) return this;\n\n const checkHasSelected = selectedOrigin.classList.contains(this.config.selectedClass);\n\n if (checkHasSelected) {\n this.selectedOrigin = selectedOrigin;\n this.value = selectedOrigin.dataset.code;\n }\n\n this.addEventListener();\n\n return this;\n }\n};\n","const base = {\n component: 'OriginList',\n init: true,\n originOption: 'data-code',\n selectedClass: 'selected'\n};\n\nconst configuration = {\n logitravel: {\n ...base,\n ...{\n endpoint: '/mybookings/origin/setorigin',\n parameterName: 'airportcode',\n verb: 'post'\n }\n }\n};\n\nmodule.exports = function fn(type = 'logitravel') {\n return configuration[type] || base;\n};\n","/* ==========================================================================\n HeaderByl > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\nconst { addModal } = require('./origins');\nconst { initTop } = require('./top');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { setVerticalImage } = require('../../helpers/images');\nconst { initSelect } = require('./select');\nconst { initNav } = require('./nav');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n header: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Destroy top */\n\n /* Destroy main */\n\n /* Unsubscribe */\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n companyLogo: this.images.companyLogo.store.subscribe(state => {\n const { loaded } = state.image;\n\n if (!loaded) {\n return;\n }\n\n /* Set vertical */\n setVerticalImage(this.images.companyLogo);\n })\n };\n\n if (this.hooks.origins) {\n this.subscriptions = {\n ...this.subscriptions,\n origins: fromEvent(this.hooks.origins, 'click').subscribe(() => {\n addModal(this);\n })\n };\n }\n\n if (this.select) {\n this.subscriptions = {\n ...this.subscriptions,\n selectOption: fromEvent(this.select.choices.choiceList.element, 'click').subscribe(() => {\n console.log('Click');\n })\n };\n }\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Init select */\n if (!this.modal) {\n initSelect(this);\n }\n\n /* Init top */\n if (this.config.languages) {\n initTop(this);\n }\n\n /* Init nav */\n if (this.hooks.nav) {\n initNav(this);\n }\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n HeaderByl > Client > Modals\n ========================================================================== */\n\n/* Modules */\n\nconst { fromEvent } = require('rxjs');\nconst { filter, take } = require('rxjs/operators');\n\nconst ESCAPE_CODE = 27;\n\n/* Add modal */\nfunction addModal(instance) {\n const panel = instance;\n\n /* Set events */\n panel.modal.events = {\n ...panel.modal.events,\n closeIcon: fromEvent(instance.modal.close.element, 'click').subscribe(() => {\n instance.modal.actions.hide();\n }),\n escapeKey: fromEvent(window.document, 'keyup')\n .pipe(\n filter(event => event.keyCode === ESCAPE_CODE),\n take(1)\n )\n .subscribe(() => {\n instance.modal.actions.hide();\n }),\n outClick: fromEvent(instance.modal.element, 'click')\n .pipe(filter(({ target }) => !target.closest('[data-modal-wrapper]')))\n .subscribe(() => {\n instance.modal.actions.hide();\n })\n };\n\n /* Display */\n instance.modal.actions.display();\n}\n\n/* Exports */\nmodule.exports = {\n addModal\n};\n","/* ==========================================================================\n HeaderByl > Client > Top\n ========================================================================== */\n\nconst { fromEvent } = require('rxjs');\nconst { filter } = require('rxjs/operators');\n\nconst { actions, types } = require('../store/actions');\n\nconst { addLanguages, destroyLanguages } = require('../languages');\n\n/* Init top */\nfunction initTop(instance) {\n const panel = instance;\n\n /* Languages */\n panel.languageBox = document.querySelector('[data-language-box]');\n\n panel.actions = {\n ...panel.actions,\n openLang: () => {\n return instance.store.dispatch(actions.openLang());\n },\n closeLang: () => {\n return instance.store.dispatch(actions.closeLang());\n }\n };\n\n /* Update reactions */\n panel.reactions = {\n ...panel.reactions,\n openLang: instance.store.subscribe((state, action) => {\n if (action.type !== types.OPEN_LANG) return;\n\n /* Add languages */\n addLanguages(instance);\n }),\n closeLang: instance.store.subscribe((state, action) => {\n if (action.type !== types.CLOSE_LANG) return;\n\n /* Destroy languages */\n destroyLanguages(instance);\n })\n };\n\n /* Update subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n languageBox: fromEvent(instance.languageBox, 'click')\n .pipe(filter(() => !instance.store.select('header').langBoxVisible))\n .subscribe(event => {\n event.stopPropagation();\n\n /* Dispatch open languages */\n instance.actions.openLang();\n })\n };\n}\n\n/* Destroy top */\nfunction destroyTop(instance) {\n const panel = instance;\n\n instance.languageBox.actions.destroy();\n\n delete panel.languageBox;\n}\n\n/* Exports */\nmodule.exports = {\n initTop,\n destroyTop\n};\n","/* ==========================================================================\n HeaderByl > Client > Languages\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { fromEvent } = require('rxjs');\nconst { take, filter, map } = require('rxjs/operators');\n\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst { collapse, expand } = require('@bluekiri/alexandria-contrib-components/animations/collapse');\nconst ImageTemplate = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/template');\nconst ImageClient = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst { changeLanguage } = require('../services');\n\nconst configuration = require('../config');\n\n/* Render Flags */\nconst renderFlags = (flag = {}, code = '', context = {}) => {\n return ImageTemplate(\n addData(\n {\n src: flag\n },\n { type: `${configuration().type.companyLogo}-${code}` }\n ),\n context\n );\n};\n\n/* Language */\nconst renderLanguage = language => {\n /* Data */\n const { content = '', code = '', flag = '' } = language;\n\n return html(`\n
  • \n
    \n ${renderFlags(flag, code)}\n
    \n
    \n ${content}\n
    \n ${code}\n
  • \n `);\n};\n\n/* Render languages */\nconst renderLang = languages => {\n return html(`\n \n `);\n};\n\n/* Create languages */\nfunction createLanguages(instance) {\n /* Data */\n const { languages } = instance.config;\n\n /* Template */\n const template = html(`\n
    \n ${languages.length > 0 ? renderLang(languages) : ''}\n
    \n `);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add languages */\nfunction addLanguages(instance) {\n const panel = instance;\n\n /* Node */\n const node = createLanguages(instance);\n\n /* Add DOM */\n document.body.appendChild(node);\n\n /* Placement */\n const viewportOffset = instance.languageBox.getBoundingClientRect();\n const placementEl = {\n left: viewportOffset.left,\n top: viewportOffset.top + window.scrollY,\n height: instance.languageBox.offsetHeight,\n width: instance.languageBox.offsetWidth\n };\n\n node.style.top = `${placementEl.top + placementEl.height}px`;\n node.style.left = `${placementEl.left}px`;\n node.style.width = `${placementEl.width}px`;\n\n /* Reference element */\n panel.languagesEl = node;\n\n /* Init flags */\n panel.langFlags = [...instance.languagesEl.querySelectorAll('[data-lang]')].map(item => {\n /* Data */\n const { type } = item.querySelector('[data-component=\"ImageRxjs\"]').dataset;\n const { langAjax } = instance.config;\n\n /* Flags event */\n fromEvent(item, 'click')\n .pipe(map(event => event.currentTarget.dataset.lang))\n .subscribe(language => {\n // If parent is a link return\n if (item.parentNode.nodeName.toLowerCase() === 'a' && node.parentNode.href !== '') {\n return;\n }\n /* Send POST */\n changeLanguage(language, langAjax)\n .pipe(take(1))\n .subscribe(data => {\n if (data.error) {\n console.log('Oooopsss ... An error has occurred to change the language :(');\n\n return;\n }\n\n /* Reload */\n window.location.reload(true);\n });\n });\n\n return ImageClient(`[data-component=\"ImageRxjs\"][data-type=\"${type}\"]`);\n });\n\n /* Init */\n fromEvent(node, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n /* Locks height collapse */\n node.classList.add(configuration().css.visible);\n\n /* Update subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n windowClicks: fromEvent(window.document, 'click')\n .pipe(\n filter(event => !event.target.closest('[data-header-languagesPanel]')),\n take(1)\n )\n .subscribe(() => {\n /* Dispatch close languages */\n instance.actions.closeLang();\n })\n };\n });\n\n /* Start animation */\n setTimeout(() => expand(node), 50);\n}\n\n/* Destroy languages */\nfunction destroyLanguages(instance) {\n const panel = instance;\n\n /* Init */\n fromEvent(instance.languagesEl, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n instance.subscriptions.windowClicks.unsubscribe();\n delete panel.subscriptions.windowClicks;\n\n instance.languagesEl.parentNode.removeChild(instance.languagesEl);\n delete panel.langFlags;\n delete panel.languagesEl;\n });\n\n /* Trigger animation */\n setTimeout(() => collapse(instance.languagesEl), 50);\n}\n\n/* Exports */\nmodule.exports = {\n addLanguages,\n destroyLanguages\n};\n","/* ==========================================================================\n HeaderByl > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n langBoxVisible: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.CLOSE_LANG:\n return {\n ...state,\n langBoxVisible: false\n };\n case types.OPEN_LANG:\n return {\n ...state,\n langBoxVisible: true\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","const config = require('../client/js/config');\n\n/* Helper to set vertical image */\nfunction setVerticalImage(img) {\n const { src } = img.store.select('image');\n\n const image = new Image();\n image.src = src;\n image.onload = function onLoad() {\n if (image.width < image.height) img.element.classList.add(config().css.vertical);\n };\n}\n\nmodule.exports = {\n setVerticalImage\n};\n","/* ==========================================================================\n HeaderByl > Client > Select\n ========================================================================== */\n\n/* Modules */\nconst { take } = require('rxjs/operators');\n\nconst Select = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js');\nconst { types } = require('@bluekiri/alexandria-contrib-components/components/select-rxjs/client/js/store/actions');\n\nconst { changeOrigin } = require('../services');\n\n/* InitSelect */\nfunction initSelect(instance) {\n const panel = instance;\n\n const { selector } = instance;\n\n panel.select = Select(`${selector} [data-component=SelectRxjs]`);\n\n if (!panel.select) return;\n\n /* Reaction calendar */\n panel.reactions = {\n ...instance.reactions,\n selectOption: instance.select.store.subscribe((state, action) => {\n if (types.SELECT_OPTION !== action.type) return;\n\n const code = instance.select.store.state.select.value.value;\n\n /* Send POST */\n changeOrigin(code, panel)\n .pipe(take(1))\n .subscribe(data => {\n if (data.error) {\n console.log('Oooopsss ... An error has occurred to change the origin :(');\n\n return;\n }\n\n /* Reload */\n window.location.reload(true);\n });\n })\n };\n}\n\n/* Exports */\nmodule.exports = {\n initSelect\n};\n","/* ==========================================================================\n HeaderByl > Client > Nav\n ========================================================================== */\n\n/* Modules */\nconst { fromEvent } = require('rxjs');\nconst { filter, map } = require('rxjs/operators');\n\n/* Init */\nfunction initNav(instance) {\n const panel = instance;\n\n /* Hooks */\n const navMenu = panel.hooks.nav;\n\n /* Subscriptions */\n panel.subscriptions = {\n ...instance.subscriptions,\n navMouseover: fromEvent(navMenu, 'mouseover')\n .pipe(\n map(event => event.target.closest('[data-item]')),\n filter(element => element !== null)\n )\n .subscribe(el => {\n /* Data */\n el.childNodes[3].classList.remove('is-hidden');\n }),\n navMouseout: fromEvent(navMenu, 'mouseout')\n .pipe(\n map(event => event.target.closest('[data-item]')),\n filter(element => element !== null)\n )\n .subscribe(el => {\n /* Data */\n el.childNodes[3].classList.add('is-hidden');\n })\n };\n}\n\n/* Exports */\nmodule.exports = {\n initNav\n};\n","/* ==========================================================================\n FooterByl > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst ImageClient = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst config = require('./config');\n\n/**\n * FooterByl component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function FooterByl(selector = '[data-component=FooterByl]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = {};\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n\n return result;\n })()\n };\n\n const { type: { logoLogi, logoCompany, logoFlag } = {} } = config();\n\n const selectorImage = `${selector} [data-component=\"ImageRxjs\"]`;\n\n /* LogiLogo */\n instance.logoLogi = ImageClient(`${selectorImage}[data-type=\"${logoLogi}\"]`, {\n ...configuration.logoLogi\n });\n\n /* LogoCompany */\n instance.logoCompany = ImageClient(`${selectorImage}[data-type=\"${logoCompany}\"]`, {\n ...configuration.logocompany\n });\n\n /* Flags */\n instance.flags = [\n ...instance.element.querySelectorAll(`${selectorImage}[data-type^=\"${logoFlag}\"]`)\n ].map((item, index) => ImageClient(`${selectorImage}[data-type=\"${logoFlag}-${index}\"]`));\n\n /* LogosExternal */\n instance.logosExternal = [...instance.element.querySelectorAll(`${selectorImage}`)].map(item =>\n ImageClient(`${selectorImage}[data-type='${item.dataset.type}']`)\n );\n\n /* Return */\n return instance;\n }\n return {};\n};\n","/* ==========================================================================\n FooterByl > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'FooterByl',\n type: {\n logoLogi: 'footer-logo-logi',\n logoCompany: 'footer-logo-company',\n logoFlag: 'footer-logo-flag',\n logoExternal: 'footer-logo-external'\n },\n css: {\n logoLogi: 'footer-byl-logoLogi',\n logoCompany: 'footer-byl-logoCompany',\n logoExternal: 'footer-byl-logo-external'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n TopButton > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst config = require('./config');\nconst prototype = require('./prototype');\n\n/**\n * TopButton component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function TopButton(selector = '[data-component=\"TopButton\"]', configuration = {}) {\n if (elementExist(selector)) {\n // Instance reference\n const instance = Object.create(prototype);\n\n instance.element = document.querySelector('[data-component=\"TopButton\"]');\n\n instance.config = { ...config(), ...configuration };\n\n /* Auto init */\n if (instance.config.init) instance.init();\n\n return instance;\n }\n};\n","/* ==========================================================================\n TopButton > Config\n ========================================================================== */\n\nconst config = {\n component: 'TopButton',\n init: true,\n step: 50,\n interval: 16,\n scrollToShow: 350\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n TopButton > Client > Prototype\n ========================================================================== */\nconst prototype = {\n scrollToTop: function Fn() {\n let intervalId = 0;\n\n intervalId = setInterval(() => {\n if (window.pageYOffset === 0) {\n clearInterval(intervalId);\n }\n window.scroll(0, window.pageYOffset - this.config.step);\n }, this.config.interval);\n },\n\n checkScroll: function Fn() {\n if (window.scrollY >= this.config.scrollToShow) {\n this.element.classList.remove('is-hidden');\n this.element.classList.add('is-visible');\n\n return this;\n }\n this.element.classList.remove('is-visible');\n this.element.classList.add('is-hidden');\n\n return this;\n },\n\n events: function Fn() {\n this.element.addEventListener('click', this.scrollToTop);\n window.addEventListener('scroll', this.checkScroll);\n\n return this;\n },\n\n bindEvents: function Fn() {\n this.scrollToTop = this.scrollToTop.bind(this);\n this.checkScroll = this.checkScroll.bind(this);\n\n return this;\n },\n\n init: function Fn() {\n this.bindEvents();\n this.checkScroll();\n this.events();\n }\n};\n\nmodule.exports = prototype;\n","/* ==========================================================================\n CruisesCertifications > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\n/**\n * CruisesCertifications component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CruisesCertifications(selector = '[data-component=\"CruisesCertifications\"]') {\n if (elementExist(selector)) {\n // Instance reference\n const instance = {};\n\n // Element reference\n instance.element = document.querySelector(selector);\n\n const items = [...instance.element.querySelectorAll('[data-component=\"ImageRxjs\"]')];\n\n instance.images = items.map((item, index) => {\n item.setAttribute('data-type', `cruises-certification-image-${index}`);\n\n return Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"cruises-certification-image-${index}\"]`);\n });\n\n return instance;\n }\n};\n","/* ==========================================================================\n ClickToCall > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst AgentCarouselClient = require('../../../agent-carousel/client/js');\nconst ModalClient = require('../../../modal/client/js');\nconst config = require('./config');\n\n/**\n * ModalDiscountInformation component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ClickToCallClient(selector = '[data-component=\"ClickToCall\"]', configuration = {}) {\n if (elementExist(selector)) {\n // Instance reference\n const instance = {};\n\n instance.config = { ...config(), ...configuration };\n\n // Element reference\n instance.element = document.querySelector(selector);\n\n instance.agentCarousel = AgentCarouselClient(\n `${selector} [data-component=\"AgentCarousel\"]`,\n instance.config.agentCarousel\n );\n\n instance.trigger = instance.element.querySelector(`[data-type=\"${config().modal.trigger}\"]`);\n instance.modal = ModalClient(`[data-component=\"Modal\"][data-type=\"${config().modal.type}\"]`, {\n ...instance.config.modal,\n triggers: [instance.trigger || instance.element],\n onClose: () => {\n if (instance.agentCarousel.legalText) {\n instance.agentCarousel.legalText.tooltips[0].hide();\n }\n clearInterval(instance.agentCarousel.interval);\n }\n });\n\n if (instance.config.initOnClick) {\n instance.modal.onOpen = () => {\n const { element, agentCarousel } = instance;\n if (element.dataset.clicked) {\n agentCarousel.interval = setInterval(() => agentCarousel.ajaxCall(), agentCarousel.config.interval);\n\n return true;\n }\n\n element.dataset.clicked = true;\n\n agentCarousel.init(selector);\n return true;\n };\n }\n\n const paramC2c = getUrlParameter('c2c');\n\n if (paramC2c === '1' || paramC2c === 'true') {\n instance.modal.display();\n }\n\n return instance;\n }\n};\n\nfunction getUrlParameter(param) {\n const sPageURL = decodeURIComponent(window.location.search.substring(1));\n const sURLVariables = sPageURL.split('&');\n let sParameterName;\n let i;\n\n for (i = 0; i < sURLVariables.length; i++) {\n sParameterName = sURLVariables[i].split('=');\n\n if (sParameterName[0] === param) {\n return sParameterName[1] === undefined ? true : sParameterName[1];\n }\n }\n return false;\n}\n","/* ==========================================================================\n Carousel > Prototype\n ========================================================================== */\n\n/* Modules */\nconst Swiper = require('swiper/dist/js/swiper');\n\nconst config = require('./vendor/config');\n\nconst { resizeWindow } = require('../../../../events/resize');\n\n/* Set the multi carousel */\nfunction setMultiCarousel(instance) {\n const result = {};\n const selectorClass = `js-${instance.id}`;\n\n /* Add the custom classes to navigation */\n if (instance.config.hasNavigation) {\n result.navigation = {};\n result.navigation.prevEl = `${instance.swiper.navigation.prevEl}.${selectorClass}`;\n result.navigation.nextEl = `${instance.swiper.navigation.nextEl}.${selectorClass}`;\n\n instance.element.parentNode\n .querySelectorAll('.carousel__navigation')\n .forEach(item => item.classList.add(selectorClass));\n }\n\n /* Add the custom classes to pagination */\n if (instance.config.hasPagination) {\n result.pagination = {};\n result.pagination.el = `${instance.swiper.pagination.el}.${selectorClass}`;\n\n instance.element.parentNode.querySelector('.carousel__pagination').classList.add(selectorClass);\n }\n\n return result;\n}\n\nconst checkHasNavigation = (hasNavigation, instance) => {\n const panel = instance;\n if (hasNavigation) {\n panel.swiper.navigation = { ...instance.swiper.navigation, ...setMultiCarousel(instance).navigation };\n return;\n }\n panel.swiper.navigation = {};\n};\n\nconst checkHasPagination = (hasPagination, instance) => {\n const panel = instance;\n if (hasPagination) {\n panel.swiper.pagination = { ...instance.swiper.pagination, ...setMultiCarousel(instance).pagination };\n return;\n }\n panel.swiper.pagination = {};\n};\n\nconst carousel = {\n /* Update swiper view */\n update() {\n this.swiper.update();\n\n return this;\n },\n /* Add 3rd party library config to the instance config */\n setConfig() {\n /* compose config for 3rd party library */\n const baseConfig = config(this.config);\n this.swiper = { ...baseConfig, ...this.config.swiper };\n\n return this;\n },\n /* Append slide */\n appendSlide(content = '') {\n if (!content) return this;\n\n this.swiper.appendSlide(`
    ${content}
    `);\n\n return this;\n },\n /* Init */\n init() {\n /* Set the 3rd party library config */\n this.setConfig();\n\n /* Set the multicarousel */\n if (this.config.isMulti) {\n checkHasNavigation(this.config.hasNavigation, this);\n\n checkHasPagination(this.config.hasPagination, this);\n }\n\n /* Create 3rd party library choices instance */\n this.swiper = new Swiper(this.element, this.swiper);\n\n /* Set auto resize */\n const { autoResize = true } = this.config;\n\n if (autoResize) {\n resizeWindow(250);\n }\n }\n};\n\nmodule.exports = carousel;\n","/* ==========================================================================\n Carousel > Vendor > Config\n ========================================================================== */\n\nconst config = {\n init: true,\n slidesPerView: 6,\n slidesPerGroup: 6,\n spaceBetween: 20,\n speed: 900,\n containerModifierClass: 'carousel--',\n slideClass: 'carousel__slide',\n slideActiveClass: 'carousel__slide--active',\n slideVisibleClass: 'carousel__slide--visible',\n slideNextClass: 'carousel__slide--next',\n slidePrevClass: 'carousel__slide--prev',\n wrapperClass: 'carousel__wrapper'\n};\n\n/* Breakpoints config */\nconst breakpoints = {\n // when window width is <= 480px\n 480: {\n slidesPerView: 1,\n slidesPerGroup: 1\n },\n // when window width is <= 720px\n 720: {\n slidesPerView: 2,\n slidesPerGroup: 2\n },\n // when window width is <= 1200px\n 1200: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n // when window width is <= 1600px\n 1600: {\n slidesPerView: 4,\n slidesPerGroup: 4\n }\n};\n\n/* Navigation config */\nconst navigation = {\n nextEl: '.carousel__navigation--next',\n prevEl: '.carousel__navigation--prev',\n hiddenClass: 'carousel__navigation--hidden',\n disabledClass: 'carousel__navigation--disabled'\n};\n\n/* Pagination config */\nconst pagination = {\n el: '.carousel__pagination',\n modifierClass: 'carousel__pagination--',\n currentClass: 'carousel__pagination--current',\n totalClass: 'carousel__pagination--total',\n hiddenClass: 'carousel__pagination--hidden',\n bulletClass: 'carousel__bullet',\n bulletActiveClass: 'carousel__bullet--active',\n clickable: true,\n clickableClass: 'carousel__pagination--clickable'\n};\n\n/* Autoplay config */\nconst autoplay = {\n delay: 7000\n};\n\nmodule.exports = (options = {}) => ({\n ...config,\n breakpoints: options.hasBreakpoints ? breakpoints : false,\n navigation: options.hasNavigation ? navigation : false,\n pagination: options.hasPagination ? pagination : false,\n autoplay: options.hasAutoplay ? autoplay : false\n});\n","/* ==========================================================================\n Carousel config data\n ========================================================================== */\n\n/* Config */\nconst config = {\n component: 'Carousel',\n init: true,\n isMulti: true,\n hasPagination: false,\n hasNavigation: true,\n hasBreakpoints: true,\n hasMousewheel: false,\n hasAutoplay: false,\n hasController: false,\n navigation: {\n prev: 'angle-left',\n next: 'angle-right'\n },\n css: {\n slide: 'carousel__slide'\n }\n};\n\n/* Exports */\nmodule.exports = () => config;\n","/* ==========================================================================\n Modal > Client > Prototype\n ========================================================================== */\n\n/* Imports */\nconst tippy = require('tippy.js');\nconst intlTelInput = require('intl-tel-input');\nconst intlTelInputUtils = require('intl-tel-input/build/js/utils');\nconst axios = require('axios');\n\nconst InputClient = require('../../../input/client/js');\nconst ModalClient = require('../../../modal/client/js');\nconst Image = require('../../../image/client/js');\nconst config = require('./config');\n\nconst agentCarousel = {\n initLegalText: function fn() {\n const { legalText } = this.config.type;\n\n const tippyLegalText = tippy(`${this.selector} [data-type='${legalText}-link']`, {\n arrow: true,\n arrowType: 'sharp',\n duration: 0,\n placement: 'bottom',\n theme: 'light base price-info',\n trigger: 'click',\n interactive: true,\n html: this.element.querySelector(`${this.selector} [data-type='${legalText}-message']`)\n });\n\n return tippyLegalText;\n },\n initPhone: function fn(instance, lang) {\n const telInputElement = instance.getInput();\n\n // initialise plugin Intl telephone\n const instancePlugin = intlTelInput(telInputElement, {\n preferredCountries: ['ES', 'PT', 'DE', 'FR', 'GB', 'IT', 'BR', 'FI', 'IL', 'AE', 'MX', 'RU'],\n initialCountry: lang,\n autoPlaceholder: 'off',\n utilsScript: intlTelInputUtils\n });\n\n telInputElement.addEventListener('keyup', () => {\n const number = instancePlugin.getNumber();\n\n if (instancePlugin.isValidNumber()) {\n instancePlugin.setNumber(number);\n }\n });\n\n return instancePlugin;\n },\n initModal: function fn() {\n // Modal\n if (!this.config.c2cMode) {\n if (!this.modalInit) {\n this.modalInit = true;\n\n this.modal = ModalClient(`${this.selector} [data-component=\"Modal\"]`, {\n autoDom: this.config.modal.autoDom,\n triggers: this.carousel.element.querySelectorAll(`[data-type=${this.config.type.cardCarousel}]`),\n onOpen: () => {\n Image(`${this.selector} [data-component=\"Image\"][data-type=\"image-modal\"]`);\n },\n onClose: () => {\n if (this.legalText && this.legalText.tooltips.length > 0) {\n this.legalText.tooltips[0].hide();\n }\n this.previusTarget = undefined;\n this.removeActives(this.cards);\n }\n });\n\n return this.modal;\n }\n\n this.modal.config.triggers = this.carousel.element.querySelectorAll(\n `[data-type=${this.config.type.cardCarousel}]`\n );\n this.modal.init();\n\n return this.modal;\n }\n\n return false;\n },\n initHidden: function fn() {\n this.busy.classList.add(this.config.css.hidden);\n // this.schedule.classList.add(this.config.css.hidden);\n this.description.classList.add(this.config.css.hidden);\n },\n setAgentCarousel: function fn(response) {\n this.initHidden();\n if (response.data.InSchedule) {\n if (this.generateAgents(response.data)) {\n this.description.classList.remove(this.config.css.hidden);\n this.carousel.element.parentNode.classList.remove(this.config.css.hidden);\n this.setCarousel();\n this.initModal();\n return true;\n }\n this.carousel.element.parentNode.classList.add(this.config.css.hidden);\n this.busy.classList.remove(this.config.css.hidden);\n return true;\n }\n\n this.carousel.element.parentNode.classList.add(this.config.css.hidden);\n this.schedule.classList.remove(this.config.css.hidden);\n return true;\n },\n ajaxCall: function fn() {\n return axios\n .get(this.settings.urlList)\n .then(response => {\n this.setAgentCarousel(response);\n })\n .catch(error => console.error(error));\n },\n sendForm: function fn(data = false) {\n const formData = {\n Phone: this.intlTelInput.getNumber(),\n Name: this.name.get(),\n AgentId: this.agentId.value,\n Queue: this.config.queueCall || this.settings.queueCall,\n Recaptcha: data\n };\n\n if (this.formValidate() && !this.submitButton.classList.contains('is-disable')) {\n this.name.element.classList.add('is-disable');\n this.phone.element.classList.add('is-disable');\n this.submitButton.classList.add('is-disable');\n this.submitButton.textContent = this.literals.sending;\n axios\n .post(this.settings.urlCall, formData)\n .then(response => {\n if (!response.data.isAvailable) {\n this.addErrorMessage();\n this.modal.hide();\n }\n this.submitButton.textContent = this.literals.sent;\n\n return true;\n })\n .catch(() => {\n this.submitButton.textContent = this.literals.sentError;\n return false;\n });\n }\n return this;\n },\n formValidate: function fn() {\n this.name.setValid();\n this.phone.setValid();\n if (!this.name.get() || !this.intlTelInput.isValidNumber()) {\n if (!this.name.get()) this.name.setError();\n if (!this.intlTelInput.isValidNumber()) this.phone.setError();\n return false;\n }\n\n return true;\n },\n removeFromDom: function fn(element) {\n if (element) {\n return this.element.removeChild(element);\n }\n return false;\n },\n setCarousel: function fn() {\n this.carousel.swiper.addSlide(0, this.agentsElements);\n this.carousel.swiper.updateSlides();\n this.carousel.swiper.slideTo(0, 0);\n this.cards = this.carousel.element.querySelectorAll(`[data-type=${this.config.type.cardCarousel}]`);\n this.images = this.initImages();\n this.addEventClick();\n return this;\n },\n initImages: function fn() {\n return this.agentsElements.map((item, index) =>\n Image(`${this.selector} [data-component=\"Image\"][data-type=\"agent-card-${index}\"]`)\n );\n },\n addForm: function fn() {\n const { name, phone, submitButton, agentId } = this.config.type;\n const form = this.replaceDataForm();\n this.submitButton = form.querySelector(`[data-type=\"${submitButton}\"]`);\n\n if (this.containerForm) {\n this.containerForm.appendChild(form);\n }\n\n const errorAlert = document.querySelector('.agent-carousel__error');\n if (errorAlert) errorAlert.classList.add('is-hidden');\n\n this.legalText = this.initLegalText();\n\n // INPUT AGENT ID\n this.agentId = form.querySelector(`[data-type=\"${agentId}\"]`);\n // INPUT NAME\n this.name = InputClient(`${this.selector} [data-component=\"Input\"][data-type=${name}]`);\n\n // INPUT PHONE\n this.phone = InputClient(`${this.selector} [data-component=\"Input\"][data-type=${phone}]`);\n this.intlTelInput = this.initPhone(this.phone, this.language);\n\n // EVENT CLICK BUTTON SEND\n this.submitButton.addEventListener('click', e => {\n // Captcha behavior\n if (this.formValidate()) {\n if (this.settings.captcha) {\n const { siteKey } = this.settings.captcha;\n\n e.preventDefault();\n // eslint-disable-next-line\n grecaptcha.ready(() => {\n const instance = this;\n // eslint-disable-next-line\n grecaptcha\n .execute(`${siteKey}`, {\n action: 'submit'\n })\n .then(response => {\n instance.sendForm(response);\n });\n });\n } else {\n this.sendForm();\n }\n }\n });\n\n return this;\n },\n removeForm: function fn() {\n const { agentForm } = this.config.type;\n if (this.containerForm.firstChild && this.containerForm.firstChild.dataset.type === agentForm) {\n this.containerForm.removeChild(this.containerForm.firstChild);\n }\n\n return this;\n },\n replaceDataAgent: function fn(data, index) {\n const newNode = this.agentCardNode.cloneNode(true).lastChild;\n const { src, alt, title, name } = this.config.agentReplace;\n const regExp = new RegExp(name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\n\n newNode.firstChild.dataset.type = `agent-card-${index}`;\n\n newNode.innerHTML = newNode.innerHTML\n .replace(src, data.ImageURLv2)\n .replace(alt, data.Name)\n .replace(title, data.Name)\n .replace(regExp, data.Name);\n\n newNode.dataset.settings = JSON.stringify(data);\n newNode.dataset.type = this.config.type.cardCarousel;\n\n return newNode;\n },\n replaceDataForm: function fn() {\n const { src, alt, title, name, description, agentId } = this.config.agentReplace;\n const data = JSON.parse(this.currentAgent.dataset.settings);\n const form = this.agentFormNode.cloneNode(true).lastChild;\n const regExp = new RegExp(name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g');\n\n form.innerHTML = form.innerHTML\n .replace(src, data.ImageURLv2)\n .replace(alt, data.Name)\n .replace(title, data.Name)\n .replace(regExp, data.Name)\n .replace(description, '')\n .replace(agentId, data.Code);\n\n return form;\n },\n generateAgents: function fn(data) {\n this.carousel.swiper.removeAllSlides();\n\n this.agentsElements = data.Operators.filter(item => item.Status === 1)\n .map((item, index) => {\n const card = this.replaceDataAgent(item, index);\n return card;\n })\n .sort(() => Math.random() - 0.5);\n\n if (this.agentsElements.length) return true;\n\n return false;\n },\n addEventClick: function fn() {\n this.cards.forEach(item =>\n item.addEventListener('click', event => {\n this.currentAgent = event.currentTarget;\n this.removeActives(this.cards);\n this.addRemoveActive(event);\n })\n );\n },\n addRemoveActive: function fn(ev) {\n const { currentTarget } = ev;\n const children = currentTarget.firstChild;\n const { active, hidden } = config().css;\n\n if (!children.classList.contains(active)) {\n if (this.config.c2cMode) this.info.classList.add(hidden);\n children.classList.add(active);\n this.addForm();\n }\n\n if (currentTarget !== this.previusTarget) {\n this.previusTarget = currentTarget;\n return this;\n }\n\n this.previusTarget = undefined;\n children.classList.remove(active);\n if (this.config.c2cMode) this.info.classList.remove(hidden);\n this.removeForm();\n return this;\n },\n removeActives: function fn(cards) {\n const { active, hidden } = config().css;\n\n if (this.config.c2cMode) this.info.classList.remove(hidden);\n this.removeForm();\n cards.forEach(item => item.firstChild.classList.remove(active));\n return this;\n },\n checkInSchedule: function fn() {\n if (this.settings.inSchedule) {\n this.carousel.element.parentNode.classList.add(this.config.css.hidden);\n this.busy.classList.remove(this.config.css.hidden);\n return true;\n }\n return false;\n },\n addCaptcha: function fn() {\n const bodyNode = document.querySelector('body');\n const captchaNode = document.createElement('script');\n captchaNode.setAttribute('src', `${this.settings.captcha.url}${this.settings.captcha.siteKey}`);\n bodyNode.appendChild(captchaNode);\n },\n addErrorMessage: function fn() {\n this.messageError = this.element.dataset.error ? JSON.parse(this.element.dataset.error) : {};\n\n const errorLocation = document.querySelector('.agent-carousel');\n const errorMessage = `\n `;\n errorLocation.insertAdjacentHTML('afterbegin', errorMessage);\n\n document.querySelector('.agent-carousel__info').classList.remove('is-hidden');\n },\n init: function fn(selector) {\n if (this.checkInSchedule()) {\n this.selector = selector;\n\n // COUNTRY\n this.language = this.element.dataset.lang === 'en' ? 'gb' : this.element.dataset.lang;\n\n // init image on c2c mode\n if (this.config.c2cMode) Image(`${this.selector} [data-component=\"Image\"][data-type=\"image-modal\"]`);\n\n // CONTAINER TO ADD AGENT FORM\n this.containerForm = this.element.querySelector(`[data-type=\"${this.config.type.containerForm}\"]`);\n\n // Get element form and card\n this.agentFormNode = this.element.querySelector(`[data-type=\"${this.config.type.agentFormNode}\"]`);\n this.agentCardNode = this.element.querySelector(`[data-type=\"${this.config.type.agentCardNode}\"]`);\n\n // Remove form and card from DOM\n this.removeFromDom(this.agentFormNode);\n this.removeFromDom(this.agentCardNode);\n\n // Adding captcha call\n if (this.settings.captcha) {\n this.addCaptcha();\n }\n\n // FIRST LOAD\n this.ajaxCall();\n // SET INTERVAL\n\n this.interval = setInterval(() => this.ajaxCall(), this.config.interval);\n }\n\n return this;\n }\n};\n\nmodule.exports = agentCarousel;\n","/* ==========================================================================\n Modal > Client > Config\n ========================================================================== */\n\n/* Base config */\nconst config = {\n component: 'Modal',\n init: true,\n hasClose: true,\n autoDom: true,\n autoStore: true,\n isLoading: false,\n triggers: [],\n type: 'modal-type',\n cssVisible: 'is-visible',\n cssModalBody: 'modal-is-visible',\n modalClose: 'data-modal-close'\n};\n\n/* Not close config */\nconst notClose = {\n hasClose: false\n};\n\nconst getConfig = (type = '') => {\n if (type === 'notClose') return { ...config, ...notClose };\n\n return { ...config };\n};\n\nmodule.exports = getConfig;\n","/* ==========================================================================\n Modal > Client > Prototype\n ========================================================================== */\n\n/* Imports */\nconst { addToStore, removeFromStore } = require('@bluekiri/alexandria/helpers/store');\n\n/* Modal store */\nlet store = [];\n\nconst modal = {\n /* Get header el */\n getHeaderEl() {\n return this.element.querySelector('[data-modal-header]');\n },\n /* Get header text */\n getHeaderText() {\n return this.getHeaderEl().innerText;\n },\n /* Set header text */\n setHeaderText(text = false) {\n if (text) this.getHeaderEl().innerText = text;\n\n return this;\n },\n /* Add triggers */\n addTriggers: function Fn(triggers) {\n triggers.forEach(trigger => {\n this.bindEvents();\n trigger.addEventListener('click', this.onClickTrigger);\n });\n },\n\n /* Set close button */\n setClose: function Fn() {\n if (!this.config.hasClose) return this;\n\n this.closeElement = this.element.querySelector(`[${this.config.modalClose}]`);\n\n return this;\n },\n\n /* Is open status */\n isOpen: function Fn() {\n return this.isVisible;\n },\n\n /* Display modal */\n display: function Fn() {\n /* Add to dom in case it is loading modal */\n if (this.config.autoDom) this.addToDom();\n\n this.element.setAttribute('aria-hidden', 'false');\n this.element.classList.add(this.config.cssVisible);\n document.body.classList.add(this.config.cssModalBody);\n this.isVisible = true;\n if (!this.config.isLoading) this.addEventListener();\n\n // Fire external callbacks before open panel\n this.onOpen();\n\n return this;\n },\n\n /* Hide modal */\n hide: function Fn() {\n this.element.setAttribute('aria-hidden', 'true');\n this.element.classList.remove(this.config.cssVisible);\n document.body.classList.remove(this.config.cssModalBody);\n this.isVisible = false;\n if (!this.config.isLoading) this.removeEventListener();\n\n /* Remove from dom in case it is loading modal */\n if (this.config.isLoading) this.removeFromDom();\n\n /* Fire external callbacks before open panel */\n this.onClose();\n\n return this;\n },\n\n /* Add to dom */\n addToDom: function Fn() {\n document.body.appendChild(this.element);\n\n return this;\n },\n\n /* Remove from dom */\n removeFromDom: function Fn() {\n this.element.parentNode.removeChild(this.element);\n\n return this;\n },\n\n /* onOpen callBacks */\n onOpen: function Fn(event = false) {\n /* Fire external callbacks */\n if (this.config.onOpen) this.config.onOpen.call(this, this, event);\n\n return this;\n },\n\n /* onClose callBacks */\n onClose: function Fn(event = false) {\n /* Fire external callbacks */\n if (this.config.onClose) this.config.onClose.call(this, this, event);\n\n return this;\n },\n\n /* On click close */\n onClickClose: function Fn(event) {\n /* Hide */\n this.hide();\n\n /* Remove from dom */\n if (this.config.autoDom) this.removeFromDom();\n\n /* Prevent bubbling */\n event.stopPropagation();\n event.preventDefault();\n\n return this;\n },\n\n /* On key down */\n onKeydown: function Fn(event) {\n /* Esc key */\n if (!(event.keyCode === 27)) return this;\n\n /* Hide */\n this.hide();\n\n /* Remove from dom */\n if (this.config.autoDom) this.removeFromDom();\n\n /* Prevent bubbling */\n event.stopPropagation();\n\n return this;\n },\n\n /* On click trigger */\n onClickTrigger: function Fn(event) {\n /* Add to dom first */\n if (this.config.autoDom) this.addToDom();\n\n /* Display */\n this.display();\n\n /* Prevent bubbling */\n event.stopPropagation();\n\n return this;\n },\n\n /* On click modal */\n onClickModal: function Fn(event) {\n /* Prevent bubbling */\n event.stopPropagation();\n\n return this;\n },\n\n /* On click window */\n onClickWindow: function Fn() {\n /* Hide */\n this.hide();\n\n /* Remove from dom */\n if (this.config.autoDom) this.removeFromDom();\n\n return this;\n },\n\n /* Bind events */\n bindEvents: function Fn() {\n this.onClickTrigger = this.onClickTrigger.bind(this);\n this.onClickWindow = this.onClickWindow.bind(this);\n this.onClickClose = this.onClickClose.bind(this);\n this.onClickModal = this.onClickModal.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n this.onOpen = this.onOpen.bind(this);\n this.onClose = this.onClose.bind(this);\n },\n\n /* Remove event listener */\n removeEventListener: function Fn() {\n /* Window */\n document.removeEventListener('click', this.onClickWindow);\n\n /* Modal */\n this.element.firstChild.removeEventListener('click', this.onClickModal);\n\n /* Close */\n if (this.config.hasClose) this.closeElement.removeEventListener('click', this.onClickClose);\n document.removeEventListener('keydown', this.onKeydown);\n },\n\n /* Add event listener */\n addEventListener: function Fn() {\n /* Bind events */\n this.bindEvents();\n\n /* Window */\n document.addEventListener('click', this.onClickWindow);\n\n /* Modal */\n this.element.firstChild.addEventListener('click', this.onClickModal);\n\n /* Close */\n if (this.config.hasClose) this.closeElement.addEventListener('click', this.onClickClose);\n document.addEventListener('keydown', this.onKeydown);\n },\n\n /* Add to store */\n addToStore: function Fn() {\n /* Control unique instances of same modal */\n if (this.getStore().filter(item => item.type === this.type).length > 0) return this;\n\n /* Quarry function */\n addToStore(this, store);\n\n return this;\n },\n\n /* Remove from store */\n removeFromStore: function Fn() {\n store = removeFromStore(this, store);\n\n return this;\n },\n\n /* Get store */\n getStore: function Fn() {\n return store;\n },\n\n /* Init */\n init: function Fn() {\n /* Set close button */\n this.setClose();\n\n /* Add triggers */\n if (this.config.triggers.length > 0) this.addTriggers(this.config.triggers);\n\n /* Add to store */\n if (this.config.autoStore) this.addToStore();\n\n /* Remove from dom */\n if (this.config.autoDom) this.removeFromDom();\n }\n};\n\nmodule.exports = modal;\n","/* ==========================================================================\n Helpers > Store\n ========================================================================== */\n\nconst removeFromStore = (instance, store) => store.filter(item => instance !== item);\nconst addToStore = (instance, store) => store.push(instance);\n\nmodule.exports = {\n removeFromStore,\n addToStore\n};\n","/* ==========================================================================\n Image > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nrequire('lazysizes');\nconst { timer } = require('rxjs');\nconst { take, repeat } = require('rxjs/operators');\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nlet TRIGGERED = false;\n\n/* Prototype */\nconst prototype = {\n /* Create loop */\n createLoop() {\n /* Exit if we have no images to loop */\n if (!this.config.images) return new Error(\"It seems that you don't have images to loop from\");\n\n return timer(this.config.delay, this.config.delay).pipe(\n take(this.config.images.length),\n repeat(this.config.loops === 0 ? false : this.config.loops)\n );\n },\n /* Start loop */\n startLoop() {\n /* Exit if we have no images to loop */\n if (!this.config.images) return new Error(\"It seems that you don't have images to loop from\");\n\n this.loop = this.createLoop().subscribe({\n next: index => this.setImage(this.config.images[index].src, this.config.resize).init(),\n error: () => {},\n complete: () => {}\n });\n\n return this;\n },\n /* Stop loop */\n stopLoop() {\n /* Exit if we have no images to loop */\n if (!this.config.images) return new Error(\"It seems that you don't have images to loop from\");\n\n this.loop.unsubscribe();\n\n return this;\n },\n /* Get alt */\n getAlt() {\n return this.getImageEl().alt;\n },\n /* Get title */\n getTitle() {\n return this.getImageEl().title;\n },\n /* Get Image element */\n getImageEl: function getImageEl() {\n return this.element.querySelector('img');\n },\n /* Set Image */\n setImage: function setImage(src, options = false) {\n let opts = false;\n\n if (options) {\n opts = {\n operation: options.operation || this.config.resize.operation,\n suboperation: options.suboperation || this.config.resize.suboperation,\n width: options.width || this.config.resize.width,\n height: options.height || this.config.resize.height,\n quality: options.quality || this.config.resize.quality\n };\n }\n\n this.getImageEl().dataset.src = ViewHelpers(this.config.context).renderImage(src, opts);\n\n return this;\n },\n /* Start lazy */\n startLazy: function startLazy() {\n this.getImageEl().classList.remove('lazyloaded');\n this.getImageEl().classList.add('lazyload');\n },\n /* Binding events */\n bindEvents: function bindEvents() {\n this.onError = this.onError.bind(this);\n\n return this;\n },\n /* onError */\n onError: function onError() {\n this.getImageEl().src = this.getImageEl().dataset.alternative;\n\n return this;\n },\n /* Add event listener */\n addEventListener: function addEventListener() {\n /* Bind events */\n this.bindEvents();\n\n /* Error */\n this.getImageEl().addEventListener('error', this.onError, { once: true });\n\n /* Lazy loaded */\n if (!TRIGGERED)\n this.getImageEl().addEventListener(\n 'lazyloaded',\n () => {\n if (this.config.autoplay) this.startLoop();\n TRIGGERED = true;\n },\n { once: true }\n );\n },\n /* Init */\n init: function init() {\n /* Exit in case its not lazy */\n if (this.config.disableLazy) return this;\n\n /* Add event listener */\n this.addEventListener();\n\n /* Start lazy load */\n this.startLazy();\n\n /* Return */\n return this;\n }\n};\n\nmodule.exports = prototype;\n","/* ==========================================================================\n Image > Client > Config\n ========================================================================== */\n\n/* Modules */\n\n/* Config */\nconst config = {\n component: 'Image',\n init: true,\n autoplay: false,\n delay: 3000,\n loops: 1,\n resize: {\n operation: 'resize',\n suboperation: 'crop',\n width: 200,\n height: 200,\n quality: 97\n },\n disableLazy: false,\n image: {\n lazy: '/comun/images/shim.gif'\n },\n css: {\n withBackground: 'image--with-background',\n isVertical: 'image--is-vertical'\n }\n};\n\n/* Export */\nmodule.exports = () => config;\n","/* ==========================================================================\n ClickToCall > Client\n ========================================================================== */\n\nconst config = {\n component: 'ClickToCall',\n initOnClick: true,\n modal: {\n autoDom: false,\n trigger: 'modal-contact-agent-trigger',\n type: 'modal-contact-agent'\n },\n css: {\n modal: 'modal--c2c'\n },\n agentCarousel: {\n init: false,\n c2cMode: true\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n BreadcrumbsIdCru > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Input = require('@bluekiri/alexandria-contrib-components/components/input-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * BreadcrumbsIdCru component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function BreadcrumbsIdCru(selector = '[data-component=BreadcrumbsIdCru]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.input = Input(`${selector} [data-component=InputRxjs]`);\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n BreadcrumbsIdCru > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\nconst { fromEvent } = require('rxjs');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\nconst { sendForm } = require('./form');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n sendFormKeyDown: fromEvent(window, 'keydown').subscribe(e => {\n const { input } = this.input.hooks;\n const { value } = input;\n\n if (value === '' || document.activeElement !== input) return;\n if (e.keyCode && e.keyCode === 13) sendForm(this, value);\n }),\n sendFormClick: fromEvent(this.input.element.querySelector('i'), 'click').subscribe(() => {\n const { value } = this.input.hooks.input;\n if (value === '') return;\n sendForm(this, value);\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n BreadcrumbsIdCru > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n BreadcrumbsIdCru > Client > Form\n ========================================================================== */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Services = require('../services');\nconst Mapper = require('./mapper');\n\nconst ID = 'cruiseCode';\n\nfunction sendForm(instance, value) {\n const { endpoint, literals } = instance.config;\n const { Method, Arguments, Url } = endpoint;\n const { errorMessage } = literals;\n\n const values = { [ID]: value };\n\n Services()\n .sendForm({\n Url,\n Method,\n Arguments: Mapper(Arguments, values)\n })\n .subscribe(data => {\n if (!data) {\n // Mostramos el error\n const node = toNode(``)[0];\n document.body.appendChild(node);\n setTimeout(() => node.classList.add('is-visible'), 50);\n setTimeout(() => node.classList.remove('is-visible'), 2000);\n setTimeout(() => document.body.removeChild(node), 3000);\n\n return;\n }\n\n // Ha ido todo bien\n window.location.assign(data.url);\n });\n}\n\nmodule.exports = {\n sendForm\n};\n","/* ==========================================================================\n MainGroupsCru > Services\n ========================================================================== */\n\n/* Modules */\nconst { of } = require('rxjs');\nconst { fromFetch } = require('rxjs/fetch');\nconst { catchError, switchMap } = require('rxjs/operators');\n\n/* Global variables for AbortController */\nlet modelController;\nlet modelSignal;\n\n/* Exports */\n/**\n * Services\n * @param {object} context,\n * @returns {object} methods api\n */\nmodule.exports = function Services() {\n return {\n /**\n * Get model\n * @param {object} data,\n * @returns {object} model\n */\n sendForm(data = {}) {\n /* Data */\n const { Method, Url, Arguments } = data;\n\n /* Cancel the previous request */\n if (modelController !== undefined) {\n modelController.abort();\n }\n\n /* Feature detect */\n if ('AbortController' in window) {\n modelController = new AbortController();\n modelSignal = modelController.signal;\n }\n\n return fromFetch(Url, {\n method: Method,\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n Arguments\n }),\n signal: modelSignal\n }).pipe(\n switchMap((response = {}) => {\n if (response.ok) {\n return response.json();\n }\n return of({ error: true, message: `Error fetching model ${response.statusText}` });\n }),\n catchError(err => {\n return of({ error: true, message: err.message });\n })\n );\n }\n };\n};\n","/* ==========================================================================\n MainGroupsCru > Client > Form > Mapper\n ========================================================================== */\n\n/* Exports */\nmodule.exports = function mapArguments(args = [], values = {}) {\n if (args.length < 1) {\n return args;\n }\n\n return args\n .map(argument => {\n /* Data */\n const { Name, Value } = argument;\n\n if (Value) {\n return argument;\n }\n\n if (!values[Name]) {\n return false;\n }\n\n return {\n ...argument,\n Value: values[Name]\n };\n })\n .filter(item => item);\n};\n","/* ==========================================================================\n BreadcrumbsIdCru > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'BreadcrumbsIdCru',\n init: true,\n start: true,\n css: {\n input: 'input-rxjs--with-border',\n breadcrumbsId: 'breadcrumbs-rxjs--id'\n },\n type: {}\n};\n\nmodule.exports = () => config;\n","const { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst agentCarouselClient = require('@bluekiri/alexandria-contrib-components/components/agent-carousel/client/js');\nconst newsletterSubscription = require('../../../newsletter-subscription/client/js');\n\nmodule.exports = function NewsletterAgentClient(selector = '[data-component=\"NewsletterAgent\"]', configuration = {}) {\n if (elementExist(selector)) {\n const instance = {};\n\n instance.config = configuration;\n\n instance.element = document.querySelector(selector);\n\n instance.agentCarousel = agentCarouselClient(`${selector} [data-component=\"AgentCarousel\"]`);\n\n newsletterSubscription();\n\n return instance;\n }\n};\n","const $ = require('jquery');\n\nwindow.$ = $;\nwindow.jQuery = $;\n\nconst tippy = require('tippy.js');\nconst inputClient = require('@bluekiri/alexandria-contrib-components/components/input/client/js');\nconst checkboxClient = require('@bluekiri/alexandria-contrib-components/components/checkbox/client/js');\nconst emailExpReg = require('../../regexpEmail');\n\nmodule.exports = function NewsletterSubscription() {\n tippy('[data-type=\"tooltip-newsletter-sub\"]', {\n delay: 0,\n arrow: true,\n arrowType: 'sharp',\n duration: 0,\n animation: 'scale',\n placement: 'bottom',\n theme: 'light base newsletter',\n allowTitleHTML: true,\n trigger: 'click',\n interactive: true,\n distance: 20\n });\n\n checkboxClient('[data-component=\"NewsletterSubscription\"] [data-id=\"checkboxNewsletter\"]');\n const input = inputClient('[data-component=\"NewsletterSubscription\"] [data-id=\"emailNewsletter\"]');\n\n const clearForm = params => {\n params.email.setAttribute('value', '');\n params.customCommunication.removeAttribute('checked');\n\n return true;\n };\n\n const validateMail = email => {\n const reg = new RegExp(emailExpReg.getRegExpEmail());\n\n return reg.test(email.value);\n };\n\n const submit = (urlEndpoint, params) => {\n if (urlEndpoint) {\n $.ajax({\n beforeSend: () => {\n document.getElementsByClassName('js-loader-newsletter')[0].style.display = 'block';\n // SHOW LOADING\n },\n data: {\n email: params.email.value,\n origenSuscrip: 0,\n customCommunication: params.customCommunication.checked\n },\n error: () => {\n document.getElementsByClassName('js-success-newsletter')[0].style.display = 'block';\n },\n success: data => {\n if (data.status === 'ok') {\n // VALID MESSAGE\n document.getElementsByClassName('js-success-newsletter')[0].style.display = 'block';\n clearForm(params);\n }\n\n if (data.status === 'error') {\n document.getElementsByClassName('js-error-newsletter')[0].style.display = 'block';\n }\n document.getElementsByClassName('js-loader-newsletter')[0].style.display = 'none';\n },\n type: 'POST',\n url: urlEndpoint // toolfactory.common.configuration.globals.secureUrl + \"/mybookings/Subscribe\",\n });\n\n return true;\n }\n return console.warn(\"Newsletter subscription component hasn't been configured\");\n };\n\n const submitButton = document.getElementById('submitNewsletter');\n\n if (submitButton) {\n submitButton.addEventListener('click', event => {\n const email = document.querySelector('[data-id=\"emailNewsletter\"] input');\n const customCommunication = document.getElementById('checkboxNewsletter');\n const urlEndpoint = document.getElementById('endpointUrl').value;\n const params = {\n email,\n customCommunication\n };\n event.preventDefault();\n\n if (validateMail(email)) {\n submit(urlEndpoint, params);\n input.setValid();\n } else {\n input.setError();\n }\n });\n\n $('.js-close-newsletter').on('click', event => {\n event.preventDefault();\n document.getElementsByClassName('js-success-newsletter')[0].style.display = 'none';\n document.getElementsByClassName('js-error-newsletter')[0].style.display = 'none';\n });\n }\n};\n","const { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst inputConfig = require('../../../input/client/js/config');\nconst prototype = require('./prototype');\n\nmodule.exports = function CheckboxClient(selector = '[data-component=\"Checkbox\"]', configuration = {}) {\n if (elementExist(selector)) {\n // Extend the proto input base with specific methods\n const instance = Object.create(prototype);\n\n // Config\n instance.config = { ...inputConfig, ...configuration };\n\n // Element reference\n instance.element = document.querySelector(selector);\n\n // Id reference\n instance.id = instance.element.dataset.id || randomId('checkbox');\n\n // Init error handler\n instance.error = false;\n\n // Value reference\n instance.value = instance.getInput().value;\n\n // Auto init\n if (instance.config.init) instance.init();\n\n return instance;\n }\n};\n","/* ==========================================================================\n Checkbox > Protoype\n ========================================================================== */\nconst inputPrototype = require('../../../input/client/js/prototype');\n\nconst checkbox = {\n ...inputPrototype,\n /* Status is checked */\n isChecked: function Fn() {\n return this.getInput().checked;\n },\n\n /* Check */\n check: function Fn() {\n if (!this.isChecked()) this.getInput().checked = true;\n\n return this;\n },\n\n /* Uncheck */\n uncheck: function Fn() {\n if (this.isChecked()) this.getInput().checked = false;\n\n return this;\n },\n\n /* On change */\n onChange: function Fn(event = false) {\n /* Get track of the new value in the instance based on the input one */\n if (this.value !== this.getInput().value) this.set(this.getInput().value, false);\n\n /* Fire external callbacks */\n if (this.config.onChange.length > 0) this.config.onChange.forEach(item => item.call(this, this, event));\n\n return this;\n },\n\n /* Add event listener */\n addEventListener: function Fn() {\n /* Bind events */\n this.bindEvents();\n\n /* On change */\n this.getInput().addEventListener('change', this.onChange);\n\n return this;\n },\n\n /* Remove event listener */\n removeEventListener: function Fn() {\n /* On change */\n this.getInput().removeEventListener('change', this.onChange);\n\n return this;\n },\n\n /* Bind events */\n bindEvents: function Fn() {\n this.onChange = this.onChange.bind(this);\n\n return this;\n },\n\n /* Init */\n init: function Fn() {\n /* Connect the label in case it has it with its input */\n this.setPairing();\n\n /* Adding listener */\n this.addEventListener();\n }\n};\n\nmodule.exports = checkbox;\n","/* eslint-disable */\nmodule.exports = {\n getRegExpEmail: () => /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n};\n/* eslint-enable */\n","/* ==========================================================================\n CarouselBanner > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst ProductCardCarousel = require('../../../product-card-carousel/client/js');\nconst VerticalBannerMask = require('../../../vertical-banner-mask/client/js');\nconst config = require('./config');\n\n/**\n * CarouselBanner component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CarouselBanner(selector = '[data-component=CarouselBanner]', configuration = {}) {\n if (elementExist(selector)) {\n const instance = {};\n\n instance.element = document.querySelector(selector);\n\n instance.config = { ...config(), ...configuration };\n\n instance.mask = VerticalBannerMask(`${selector} [data-component=VerticalBannerMask]`);\n\n instance.carousel = ProductCardCarousel(\n `${selector} [data-component=\"ProductCardCarouselCruises\"]`,\n instance.mask ? config().carousel.config : config().carouselNoBanner.config\n );\n\n return instance;\n }\n};\n","const { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Carousel = require('@bluekiri/alexandria-contrib-components/components/carousel/client/js');\n\nconst ProductCardT2 = require('../../../product-card-t2/client/js');\nconst config = require('./config');\n\n/**\n * Client/browser JS for product card carousel\n * @param {string} selector selector\n */\nmodule.exports = function ProductCardCarousel(\n selector = '[data-component=\"ProductCardCarouselCruises\"]',\n configuration = {}\n) {\n // Initialize the carousels that are in the page as soon as it is loaded\n if (elementExist(selector)) {\n const instance = {};\n\n instance.element = document.querySelector(selector);\n\n instance.config = { ...config(), ...configuration };\n\n instance.cards = [...instance.element.querySelectorAll(`${selector} [data-component=\"ProductCardT2\"]`)].map(\n (item, index) => {\n const it = item;\n it.dataset.type = `image-card-${index}`;\n\n return ProductCardT2(`${selector} [data-component=\"ProductCardT2\"][data-type=\"image-card-${index}\"]`);\n }\n );\n instance.carousel = Carousel(`${selector} [data-component=\"Carousel\"]`, {\n ...instance.config,\n swiper: {\n ...instance.config.swiper,\n on: {\n init: () => instance.element.classList.remove('is-loading')\n }\n }\n });\n\n return instance;\n }\n};\n","const { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst tippy = require('tippy.js');\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image/client/js');\nconst config = require('./config');\n\n/**\n * ProductCardT2 component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ProductCardT2Client(selector = '[data-component=\"ProductCardT2\"]', configuration = {}) {\n if (elementExist(selector)) {\n const instance = {};\n\n instance.element = document.querySelector(selector);\n\n instance.config = { ...config(), ...configuration };\n\n instance.tippy = tippy(`${selector} .js-product-card-t2__icon`, {\n arrow: true,\n arrowType: 'sharp',\n animation: 'fade',\n duration: 200,\n placement: 'bottom',\n theme: 'translucent base-dark highlights'\n });\n\n instance.ship = Image(`${selector} [data-type=\"${config().type.ship}\"]`);\n instance.map = Image(`${selector} [data-type=\"${config().type.map}\"]`);\n instance.logo = Image(`${selector} [data-type=\"${config().type.logo}\"]`);\n instance.dynLogo = Image(`${selector} [data-type=\"${config().type.dyn}\"]`);\n\n return instance;\n }\n};\n","/* ==========================================================================\n ProductCardT2 > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'ProductCardT2',\n type: {\n ship: 'ship-image',\n map: 'map-image',\n logo: 'logo-image',\n dyn: 'logo-logicruises'\n },\n css: {\n taxesModifier: 'product-card-t2--included-taxes',\n ship: 'product-card-t2__ship-image-container',\n map: 'product-card-t2__itinerary-image-container',\n logo: 'product-card-t2__logo-container',\n dyn: 'product-card-t2__logo-dynamic'\n },\n imagesConfig: {\n ship: {\n resize: {\n width: 162,\n height: 135\n }\n },\n map: {\n resize: {\n width: 240,\n height: 186\n }\n },\n logo: {\n resize: {\n width: 126,\n height: 81,\n suboperation: ''\n }\n },\n dyn: {\n resize: {\n width: 48,\n height: 48\n }\n }\n }\n};\n\nmodule.exports = () => config;\n","module.exports = () => ({\n init: true,\n hasPagination: true,\n hasNavigation: true,\n isMulti: true,\n swiper: {\n init: true,\n // Default parameters\n slidesPerView: 5,\n slidesPerGroup: 5,\n spaceBetween: 8,\n\n // Responsive breakpoints\n breakpoints: {\n // when window width is <= 480px\n 480: {\n slidesPerView: 1,\n slidesPerGroup: 1\n },\n // when window width is <= 768px\n 768: {\n slidesPerView: 2,\n slidesPerGroup: 2\n },\n // when window width is <= 991px\n 991: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n // when window width is <= 1200px\n 1200: {\n slidesPerView: 4,\n slidesPerGroup: 4\n }\n }\n }\n});\n","/* ==========================================================================\n VerticalBannerMask > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst imageClient = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\n/**\n * VerticalBannerMask component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function VerticalBannerMask(selector = '[data-component=VerticalBannerMask]', configuration = {}) {\n if (elementExist(selector)) {\n const instance = {};\n\n instance.element = document.querySelector(selector);\n\n instance.config = { ...configuration };\n\n instance.image = imageClient(`${selector} [data-component=\"ImageRxjs\"]`);\n\n return instance;\n }\n};\n","/* ==========================================================================\n CarouselBanner > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CarouselBanner',\n carousel: {\n config: {\n init: true,\n hasPagination: true,\n hasNavigation: true,\n isMulti: true,\n swiper: {\n init: true,\n // Default parameters\n slidesPerView: 4,\n slidesPerGroup: 4,\n spaceBetween: 8,\n\n // Responsive breakpoints\n breakpoints: {\n // when window width is <= 735px\n 735: {\n slidesPerView: 2,\n slidesPerGroup: 2\n },\n // when window width is <= 900px\n 900: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n // when window width is <= 1024px\n 1024: {\n slidesPerView: 2,\n slidesPerGroup: 2\n },\n // when window width is <= 1300px\n 1300: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n // when window width is <= 1600px\n 1600: {\n slidesPerView: 4,\n slidesPerGroup: 4\n }\n }\n }\n }\n },\n carouselNoBanner: {\n config: {\n init: true,\n hasPagination: false,\n hasNavigation: false,\n isMulti: true,\n swiper: {\n init: true,\n // Default parameters\n slidesPerView: 5,\n slidesPerGroup: 5,\n spaceBetween: 8,\n\n // Responsive breakpoints\n breakpoints: {\n // when window width is <= 480px\n 735: {\n slidesPerView: 2,\n slidesPerGroup: 2\n },\n // when window width is <= 720px\n 1024: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n // when window width is <= 1200px\n 1300: {\n slidesPerView: 4,\n slidesPerGroup: 4\n },\n // when window width is <= 1600px\n 1600: {\n slidesPerView: 5,\n slidesPerGroup: 5\n }\n }\n }\n }\n },\n css: {\n pdCarouselBanner: 'product-card-carousel-cruises--banner',\n pdCarousel: 'product-card-carousel-cruises--no-banner'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n TabsRoute > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Tabs = require('@bluekiri/alexandria-contrib-components/components/tabs-rxjs/client/js');\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * TabsRoute component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function TabsRoute(selector = '[data-component=TabsRoute]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.tabs = Tabs(`${selector} [data-component=\"TabsRxjs\"]`);\n\n instance.map = Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.map}\"]`);\n\n instance.images = [...instance.element.querySelectorAll(`${selector} [data-content]`)].map((item, index) => {\n return Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.image}-${index}\"]`);\n });\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n TabsRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * TabsRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function TabsRxjs(selector = '[data-component=TabsRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n navigation: instance.element.querySelector('[data-navigation]'),\n navigations: [...instance.element.querySelectorAll('[data-navigation] [data-tab]')],\n contents: [...instance.element.querySelectorAll('[data-content]')]\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n TabsRxjs > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { fromEvent } = require('rxjs');\nconst { filter, map, tap } = require('rxjs/operators');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initNavigation, destroyNavigation } = require('./navigation');\nconst { initImages, destroyImages } = require('./images');\n\nconst configuration = require('./config');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n changeTab: index => {\n const { disableds, tab } = this.store.select('data');\n\n if (disableds.includes(index)) {\n return false;\n }\n\n if (index === tab) {\n return false;\n }\n\n return this.store.dispatch(actions.changeTab(index));\n },\n setTab: index => {\n const { disableds, tab } = this.store.select('data');\n\n if (disableds.includes(index)) {\n return false;\n }\n\n if (index === tab) {\n return false;\n }\n\n return this.store.dispatch(actions.setTab(index));\n },\n enableTab: index => {\n const { disableds, tab } = this.store.select('data');\n\n if (!disableds.includes(index)) {\n return false;\n }\n\n if (index === tab) {\n return false;\n }\n\n return this.store.dispatch(actions.enableTab(index));\n },\n disableTab: index => {\n const { disableds, tab } = this.store.select('data');\n\n if (disableds.includes(index)) {\n return false;\n }\n\n if (index === tab) {\n return false;\n }\n\n return this.store.dispatch(actions.disableTab(index));\n },\n enable: () => this.store.dispatch(actions.enable()),\n disable: () => this.store.dispatch(actions.disable())\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Navigation */\n destroyNavigation(this);\n\n /* Images */\n destroyImages(this);\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n changeTab: this.store.subscribe((state, action) => {\n if (action.type !== types.CHANGE_TAB) return;\n\n /* Clean */\n this.hooks.navigations.forEach(item => item.classList.remove(configuration().css.active));\n this.hooks.contents.forEach(item => item.classList.remove(configuration().css.active));\n\n /* Set active */\n this.hooks.navigations[action.payload].classList.add(configuration().css.active);\n this.hooks.contents[action.payload].classList.add(configuration().css.active);\n }),\n setTab: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_TAB) return;\n\n /* Clean */\n this.hooks.navigations.forEach(item => item.classList.remove(configuration().css.active));\n this.hooks.contents.forEach(item => item.classList.remove(configuration().css.active));\n\n /* Set active */\n this.hooks.navigations[action.payload].classList.add(configuration().css.active);\n this.hooks.contents[action.payload].classList.add(configuration().css.active);\n }),\n disableTab: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE_TAB) return;\n\n /* Set disabled */\n this.hooks.navigations[action.payload].classList.add(configuration().css.disabled);\n }),\n enableTab: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE_TAB) return;\n\n /* Clean disabled */\n this.hooks.navigations[action.payload].classList.remove(configuration().css.disabled);\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n this.element.classList.remove(configuration().css.disabled);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n this.element.classList.add(configuration().css.disabled);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n changeTab: fromEvent(this.hooks.navigation, 'click')\n .pipe(\n filter(() => {\n /* Data */\n const { disabled } = this.store.select('data');\n\n return !disabled;\n }),\n filter(event => event.target.closest('[data-tab]')),\n map(event => {\n /* Data */\n const { tab, link = false } = event.target.closest('[data-tab]').dataset;\n\n return {\n event,\n index: +tab,\n hasLink: !!link,\n link\n };\n }),\n tap(({ event, hasLink }) => {\n if (!hasLink) return;\n\n event.preventDefault();\n })\n )\n .subscribe(({ index, link }) => {\n const { tab } = this.store.select('data');\n\n /* Redirect to link or execute callbacRedirect */\n if (this.config.tabsRedirect.some(item => item === index)) {\n if (this.config.callbackRedirect) {\n this.config.callbackRedirect({ previusTab: tab, tab: index, link });\n return;\n }\n\n window.location.href = link;\n return;\n }\n\n /* Change tab if the selected is distinct */\n if (index === tab) return;\n\n /* Dispatch */\n this.actions.changeTab(index);\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Configure initial disableds from data */\n const { navigations } = this.hooks;\n\n navigations.forEach(item => {\n if (!('disabled' in item.dataset)) {\n return;\n }\n\n const { tab } = item.dataset;\n\n /* Disable tab */\n this.actions.disableTab(+tab);\n\n /* Clean dataset */\n item.removeAttribute('data-disabled');\n });\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Init navigation */\n initNavigation(this);\n\n /* Images */\n initImages(this);\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n TabsRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n tab: 0,\n disableds: [],\n disabled: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.CHANGE_TAB:\n case types.SET_TAB:\n return {\n ...state,\n tab: action.payload\n };\n case types.DISABLE_TAB:\n return {\n ...state,\n disableds: [...state.disableds, action.payload]\n };\n case types.ENABLE_TAB:\n return {\n ...state,\n disableds: state.disableds.filter(item => item !== action.payload)\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: false\n };\n case types.DISABLE:\n return {\n ...state,\n disabled: true\n };\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n TabsRxjs > Client > Navigation\n ========================================================================== */\n\n/* Modules */\nconst Carousel = require('../../../../carousel-rxjs/client/js');\n\nconst configuration = require('../config');\n\n/* Init navigation */\nfunction initNavigation(instance) {\n if (instance.config.type === 'vertical') return;\n\n const panel = instance;\n\n /* Data */\n const { selector, config } = instance;\n\n /* Carousel */\n panel.navigation = Carousel(\n `${selector} [data-component='CarouselRxjs'][data-type='${configuration().type.navigation}']`,\n {\n swiper: {\n slidesPerView: 6,\n slidesPerGroup: 6,\n loop: false,\n spaceBetween: 0,\n speed: 500,\n autoplay: false,\n breakpoints: {\n // when window width is <= 480px\n 768: {\n slidesPerView: 2,\n slidesPerGroup: 2\n },\n // when window width is <= 720px\n 1200: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n\n // when window width is <= 1600px\n 1600: {\n slidesPerView: 5,\n slidesPerGroup: 5\n }\n },\n ...config.swiper\n }\n }\n );\n}\n\n/* Destroy navigation */\nfunction destroyNavigation(instance) {\n if (instance.config.type === 'vertical') return;\n const panel = instance;\n\n /* Carousel */\n instance.navigation.actions.destroy();\n delete panel.navigation;\n}\n\n/* Exports */\nmodule.exports = {\n initNavigation,\n destroyNavigation\n};\n","/* ==========================================================================\n TabsRxjs > Client > Images\n ========================================================================== */\n\n/* Modules */\nconst Image = require('../../../../image-rxjs/client/js');\n\nconst configuration = require('../config');\n\n/* Init */\nfunction initImages(instance) {\n /* Data */\n const { hasImages } = instance.config;\n\n if (!hasImages) {\n return;\n }\n\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n /* References */\n const imageEls = instance.element.querySelectorAll(\n `[data-component='ImageRxjs'][data-type^='${configuration().type.image}']`\n );\n\n panel.images = [...imageEls].map(image =>\n Image(`${selector} [data-component='ImageRxjs'][data-type='${image.dataset.type}']`)\n );\n}\n\n/* Destroy */\nfunction destroyImages(instance) {\n /* Data */\n const { hasImages } = instance.config;\n\n if (!hasImages) {\n return;\n }\n\n const panel = instance;\n\n /* References */\n instance.images.forEach(image => image.actions.destroy());\n delete panel.images;\n}\n\n/* Exports */\nmodule.exports = {\n initImages,\n destroyImages\n};\n","/* ==========================================================================\n TabsRoute > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n TabsRoute > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n TabsRoute > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'TabsRoute',\n init: true,\n start: true,\n css: {\n map: 'tabs-route__map'\n },\n type: {\n image: 'tabs-route-image',\n map: 'tabs-route-map'\n },\n imgConfig: {\n height: 300,\n width: 970\n },\n mapConfig: {\n height: 214,\n width: 305\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ItineraryDyn > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ItineraryDyn component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ItineraryDyn(selector = '[data-component=ItineraryDyn]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.map = Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.map}\"]`);\n\n instance.images = [\n ...instance.element.querySelectorAll(\n `${selector} [data-component=\"ImageRxjs\"][data-type^=\"${config().type.image}\"]`\n )\n ].map((item, index) =>\n Image(`${selector} [data-component=\"ImageRxjs\"][data-type^=\"${config().type.image}-${index}\"]`)\n );\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n ItineraryDyn > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst initCollapse = require('./collapse');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Init collapse */\n initCollapse(this);\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n ItineraryDyn > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* Import modules */\nconst Collapse = require('@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js');\nconst { types } = require('@bluekiri/alexandria-contrib-components/components/collapse-rxjs/client/js/store/actions');\n\n/* Config */\nconst config = require('../config');\n\nmodule.exports = function initCollapse(instance) {\n const panel = instance;\n\n const { selector } = instance;\n\n panel.collapses = [\n ...instance.element.querySelectorAll(\n `${selector} [data-component=\"CollapseRxjs\"][data-type^=\"${config().type.collapse}\"]`\n )\n ].map(item => {\n const reference = Collapse(`${selector} [data-component=\"CollapseRxjs\"][data-type^=\"${item.dataset.type}\"]`);\n\n reference.reactions = {\n ...reference.reactions,\n changedCollpase: reference.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_COLLAPSE) return;\n\n /* Literals */\n const { readMoreLabel = '', readLessLabel = '' } = instance.config.literals;\n\n /* If collapsed is false */\n if (!state.collapse.collapsed) {\n reference.collapsible.hooks.content.innerHTML = readLessLabel;\n reference.element.classList.add('is-not-collapsed');\n return;\n }\n\n /* Then collapsed is true */\n reference.collapsible.hooks.content.innerHTML = readMoreLabel;\n reference.element.classList.remove('is-not-collapsed');\n })\n };\n\n return reference;\n });\n};\n","/* ==========================================================================\n CollapseRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst Button = require('../../../button-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * CollapseRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CollapseRxjs(selector = '[data-component=CollapseRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n body: instance.element.querySelector('[data-collapse-body]')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Collapsible */\n instance.collapsible = Button(\n `${selector} [data-component=\"ButtonRxjs\"][data-type=\"${config().type.collapsible}\"]`\n );\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n CollapseRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { collapse, expand } = require('../../../../animations/collapse');\n\nconst { types, actions } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n collapse: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide()),\n toggleCollapse: () => this.store.dispatch(actions.toggleCollapse()),\n setCollapse: payload => this.store.dispatch(actions.setCollapse(payload))\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((_, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Delete from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean references */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((_, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n\n requestAnimationFrame(() => {\n this.element.classList.remove(css.hidden);\n });\n }),\n hide: this.store.subscribe((_, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n\n requestAnimationFrame(() => {\n this.element.classList.add(css.hidden);\n });\n }),\n toggleCollapse: this.store.subscribe((state, action) => {\n if (action.type !== types.TOGGLE_COLLAPSE) return;\n\n /* Data */\n const { icon } = this.config;\n const { collapsed } = state.collapse;\n\n if (collapsed) {\n requestAnimationFrame(() => {\n collapse(this.hooks.body);\n\n /* Dispatch collapsible action to change icon */\n this.collapsible.actions.setIcon(icon.plus);\n });\n\n return;\n }\n\n requestAnimationFrame(() => {\n expand(this.hooks.body);\n\n /* Dispatch collapsible action to change icon */\n this.collapsible.actions.setIcon(icon.minus);\n });\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n collapse: this.collapsible.events.click$.subscribe(() => {\n /* Dispatch action */\n this.actions.toggleCollapse();\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Collapsed */\n const { collapsed } = this.config;\n\n if (!collapsed) {\n return this;\n }\n\n this.actions.setCollapse(true);\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n CollapseRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n collapsed: false,\n hidden: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.SET_COLLAPSE:\n return {\n ...state,\n collapsed: action.payload\n };\n case types.TOGGLE_COLLAPSE:\n return {\n ...state,\n collapsed: !state.collapsed\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CollapseRxjs > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'CollapseRxjs',\n init: true,\n start: true,\n type: {\n collapsible: 'collapse-rxjs-collapsible'\n },\n css: {\n button: 'collapse-rxjs__button',\n hidden: 'is-hidden'\n },\n icon: {\n plus: 'plus',\n minus: 'minus'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ShipSection > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n// const Media = require('../../../media-rxjs/client/js');\nconst CardInformationCarousel = require('../../../card-information-carousel/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ShipSection component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ShipSection(selector = '[data-component=ShipSection]', configuration = {}) {\n if (elementExist(selector)) {\n // Instance\n const instance = Object.create(prototype);\n\n // Element\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.hooks = {\n galleryTrigger: instance.element.querySelector('[data-gallery-trigger]')\n };\n\n instance.logo = Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.logo}\"]`);\n instance.images = [\n ...instance.element.querySelectorAll(\n `${selector} [data-component=\"ImageRxjs\"][data-type^=\"${config().type.image}\"]`\n )\n ].map(item => Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${item.dataset.type}\"]`));\n\n instance.carousel = CardInformationCarousel(`${selector} [data-component=\"CardInformationCarousel\"]`);\n\n instance.init();\n\n return instance;\n }\n};\n","/* ==========================================================================\n CardInformationCarousel > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * CardInformationCarousel component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CardInformationCarousel(\n selector = '[data-component=CardInformationCarousel]',\n configuration = {}\n) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n CardInformationCarousel > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initCarousel, destroyCarousel } = require('./carousel');\nconst { initCards, destroyCards } = require('./cards');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Cards */\n destroyCards(this);\n\n /* Carousel */\n destroyCarousel(this);\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n initCards(this);\n\n initCarousel(this);\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n CardInformationCarousel > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CardInformationCarousel > Client > Carousel\n ========================================================================== */\n\n/* Modules */\nconst Carousel = require('@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js');\n\n/* Init Carousel */\nfunction initCarousel(instance) {\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n panel.carousel = Carousel(`${selector} [data-component='CarouselRxjs']`, {\n hasNavigation: true,\n hasAutoplay: false,\n hasBreakpoints: true,\n swiper: {\n slidesPerView: 4,\n slidesPerGroup: 4,\n centeredSlides: false,\n watchSlidesVisibility: true,\n loop: false,\n spaceBetween: 4,\n breakpoints: {\n 1024: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n 900: {\n slidesPerView: 3,\n slidesPerGroup: 3\n },\n 768: {\n slidesPerView: 2,\n slidesPerGroup: 2\n }\n }\n }\n });\n}\n\n/* Destroy Carousel */\nfunction destroyCarousel(instance) {\n const panel = instance;\n\n instance.carousel.actions.destroy();\n\n delete panel.carousel;\n}\n\n/* Exports */\nmodule.exports = {\n initCarousel,\n destroyCarousel\n};\n","/* ==========================================================================\n CardInformationCarousel > Client > Cards\n ========================================================================== */\n\n/* Modules */\nconst CardInformation = require('../../../../card-information/client/js');\n\nconst configuration = require('../config');\n\n/* Init cards */\nfunction initCards(instance) {\n const panel = instance;\n\n /* Selector */\n const { selector } = instance;\n\n panel.cards = [...instance.element.querySelectorAll(`[data-component='CardInformation']`)].map((item, index) => {\n return CardInformation(\n `${selector} [data-component='CardInformation'][data-type='${configuration().type.card}-${index}']`\n );\n });\n}\n\n/* Destroy cards */\nfunction destroyCards(instance) {\n const panel = instance;\n\n instance.cards.forEach(item => item.actions.destroy());\n\n delete panel.cards;\n}\n\n/* Exports */\nmodule.exports = {\n initCards,\n destroyCards\n};\n","/* ==========================================================================\n CardInformation > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * CardInformation component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function CardInformation(selector = '[data-component=CardInformation]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n CardInformation > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initButton, destroyButton } = require('./button');\nconst { initImage, destroyImage } = require('./image');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Image */\n destroyImage(this);\n\n /* Button */\n destroyButton(this);\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Button */\n initButton(this);\n\n /* Image */\n initImage(this);\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n CardInformation > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n CardInformation > Client > Button\n ========================================================================== */\n\n/* Modules */\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst { addModal } = require('../modal');\n\n/* Init button */\nfunction initButton(instance) {\n const { hasModal = false } = instance.config;\n\n if (!hasModal) {\n return;\n }\n\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n /* Button */\n panel.button = Button(`${selector} [data-component='ButtonRxjs']`);\n\n /* Connect modal */\n instance.button.events.click$.subscribe(() => {\n /* Add modal */\n addModal(instance);\n });\n}\n\n/* Destroy button */\nfunction destroyButton(instance) {\n const { hasModal = false } = instance.config;\n\n if (!hasModal) {\n return;\n }\n\n const panel = instance;\n\n instance.button.actions.destroy();\n\n delete panel.button;\n}\n\n/* Exports */\nmodule.exports = {\n initButton,\n destroyButton\n};\n","/* ==========================================================================\n CardInformation > Client > Modal\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\n\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst { addData, addStyle } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst { fromEvent, merge } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst Modal = require('@bluekiri/alexandria-contrib-components/components/modal-rxjs/client/js');\nconst ModalTemplate = require('@bluekiri/alexandria-contrib-components/components/modal-rxjs/template');\n\nconst ImageTemplate = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/template');\n\nconst configuration = require('../config');\n\n/* Create modal */\nfunction createModal(instance) {\n /* Data */\n const { image, header, description, title, context } = instance.config;\n\n /* Template */\n const template = ModalTemplate(\n addStyle(\n addData(\n {\n title: header,\n body: html(`\n
    \n ${ImageTemplate(\n {\n ...image,\n resize: configuration().imgConfig\n },\n context\n )}\n
    \n
    \n

    ${title}

    \n

    \n ${description}\n

    \n
    \n `)\n },\n {\n type: configuration().type.modal\n }\n ),\n [configuration().css.modal]\n ),\n context\n );\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add modal */\nfunction addModal(instance) {\n const panel = instance;\n\n /* Node */\n const node = createModal(instance);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Selector */\n const selector = `[data-component='ModalRxjs'][data-type='${configuration().type.modal}']`;\n\n /* Init */\n panel.modal = Modal(selector);\n\n /* Update */\n panel.subscriptions.modalOpen = fromEvent(panel.modal.element, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n /* Subscriptions */\n panel.subscriptions = {\n ...panel.subscriptions,\n modalCloses: merge(instance.modal.events.click$, instance.modal.events.keyup$)\n .pipe(take(1))\n .subscribe(() => {\n /* Destroy */\n destroyModal(instance);\n })\n };\n\n /* Init image inside */\n panel.modal.image = Image(`${selector} [data-component='ImageRxjs']`);\n });\n\n /* Display */\n setTimeout(() => instance.modal.actions.display(), 50);\n}\n\n/* Destroy modal */\nfunction destroyModal(instance) {\n const panel = instance;\n\n /* Subscription to destroy */\n panel.subscriptions.modalDestroy = fromEvent(instance.modal.element, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n instance.subscriptions.modalCloses.unsubscribe();\n instance.subscriptions.modalOpen.unsubscribe();\n\n instance.modal.actions.destroy();\n\n delete panel.modal;\n });\n\n /* Hide */\n instance.modal.actions.hide();\n}\n\n/* Exports */\nmodule.exports = {\n addModal,\n destroyModal\n};\n","/* ==========================================================================\n CardInformation > Client > Image\n ========================================================================== */\n\n/* Modules */\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\n/* Init image */\nfunction initImage(instance) {\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n /* Image */\n panel.image = Image(`${selector} [data-component='ImageRxjs']`);\n}\n\n/* Destroy image */\nfunction destroyImage(instance) {\n const panel = instance;\n\n instance.image.actions.destroy();\n\n delete panel.image;\n}\n\n/* Exports */\nmodule.exports = {\n initImage,\n destroyImage\n};\n","/* ==========================================================================\n ShipSection > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { fromEvent } = require('rxjs');\nconst { map } = require('rxjs/operators');\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\nconst { addGallery } = require('./gallery');\n\nconst { MQ_1300, DEFAULT, MQ_1112, MQ_1024 } = require('../../constants');\n\nconst resizeImages = instance => {\n const { gallery, context } = instance.config;\n const { imageResizer } = ViewHelpers(context);\n if (window.innerWidth <= 1024) {\n instance.images.slice(0, 4).forEach((item, index) => {\n const it = item;\n if (index === 1 || index === 2) {\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1024.RESIZE_SHORT);\n return;\n }\n if (index === 3) {\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1024.RESIZE_LARG);\n return;\n }\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1024.RESIZE_FIRST);\n });\n return;\n }\n if (window.innerWidth <= 1112) {\n instance.images.slice(0, 4).forEach((item, index) => {\n const it = item;\n if (index === 1 || index === 2) {\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1112.RESIZE_SHORT);\n return;\n }\n if (index === 3) {\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1112.RESIZE_LARG);\n return;\n }\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1112.RESIZE_FIRST);\n });\n return;\n }\n if (window.innerWidth <= 1300) {\n instance.images.slice(0, 4).forEach((item, index) => {\n const it = item;\n if (index === 1 || index === 2) {\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1300.RESIZE_SHORT);\n return;\n }\n if (index === 3) {\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1300.RESIZE_LARG);\n return;\n }\n it.hooks.img.src = imageResizer(gallery[index].src, MQ_1300.RESIZE_FIRST);\n });\n return;\n }\n instance.images.slice(0, 4).forEach((item, index) => {\n const it = item;\n if (index === 1 || index === 2) {\n it.hooks.img.src = imageResizer(gallery[index].src, DEFAULT.RESIZE_SHORT);\n return;\n }\n if (index === 3) {\n it.hooks.img.src = imageResizer(gallery[index].src, DEFAULT.RESIZE_LARG);\n return;\n }\n it.hooks.img.src = imageResizer(gallery[index].src, DEFAULT.RESIZE_FIRST);\n });\n};\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n shipSection: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {\n reseize: fromEvent(window, 'resize').subscribe(() => {\n resizeImages(this);\n }),\n galleryClick: fromEvent(this.hooks.galleryTrigger, 'click')\n .pipe(map(e => e.target.closest('[data-index]')))\n .subscribe(e => {\n const { index } = e.dataset;\n addGallery(this, +index);\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n setTimeout(() => resizeImages(this), 50);\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n ShipSection > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n src: null\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n case types.CHANGE_IMAGE_MEDIA:\n return {\n ...state,\n src: action.payload\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n ShipSection > Client > Js > Gallery\n ========================================================================== */\n\n/* Modules */\nconst { html } = require('common-tags');\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst GalActions = require('@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js/store/actions');\nconst GalleryTempalte = require('@bluekiri/alexandria-contrib-components/components/gallery-rxjs/template');\nconst Gallery = require('@bluekiri/alexandria-contrib-components/components/gallery-rxjs/client/js');\nconst { sanitizeObject } = require('@bluekiri/alexandria/helpers/sanitize');\n\n/* Create gallery */\nfunction createGallery(instance) {\n /* Data */\n const { gallery, context } = instance.config;\n\n /* Template */\n const template = html(\n GalleryTempalte(\n { items: gallery.map(item => sanitizeObject({ ...item, ...(item.config ? item.config : {}) })) },\n context\n )\n );\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add gallery */\nfunction addGallery(instance, index) {\n const panel = instance;\n\n /* Node */\n const node = createGallery(instance);\n\n /* Add to DOM */\n document.body.appendChild(node);\n\n /* Update reference */\n panel.gallery = Gallery('[data-component=\"GalleryRxjs\"]', {\n photoswipe: {\n index\n }\n });\n\n /* Update */\n panel.reactions = {\n ...panel.reactions,\n hideGallery: panel.gallery.store.subscribe((state, action) => {\n if (action.type !== GalActions.types.DESTROY) return;\n\n delete panel.gallery;\n })\n };\n}\n\n/* Exports */\nmodule.exports = {\n addGallery\n};\n","/* ==========================================================================\n GalleryRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('./client/js/config');\n\n/**\n * GalleryRxjs template\n * @param {object} data Object containing the data model for this component.\n * @param {object} context The general context object.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function Template(data, context) {\n /* Data */\n const { config = {}, items = [] } = data;\n const { styles = [], literals = {} } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n /* View Helpers */\n const { icon } = ViewHelpers(context);\n\n /* Template */\n return html(`\n
    \n \n
    \n `);\n};\n","/* ==========================================================================\n GalleryRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * GalleryRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function GalleryRxjs(selector = '[data-component=GalleryRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n photoswipe: instance.element.querySelector('[data-photoswipe]')\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n GalleryRxjs > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { initPhotoswipe } = require('./photoswipe');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy())\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Photoswipe */\n initPhotoswipe(this);\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n GalleryRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n GalleryRxjs > Client > Photoswipe\n ========================================================================== */\n\n/* Modules */\nconst PhotoSwipe = require('photoswipe');\nconst PhotoSwipeUI = require('photoswipe/dist/photoswipe-ui-default');\n\nconst { isImage, createImage, initImage } = require('../image');\nconst { isVideo, createVideo, initVideo } = require('../video');\n\n/* Create items */\nfunction createItems(instance) {\n /* Data */\n const { items } = instance.config;\n\n return items.map((item, index) => ({\n html: isVideo(item.type) ? createVideo(index, instance) : createImage(index, instance)\n }));\n}\n\n/* Init */\nfunction initPhotoswipe(instance) {\n const panel = instance;\n\n /* Hooks */\n const { photoswipe } = instance.hooks;\n\n /* Library */\n panel.photoswipe = new PhotoSwipe(photoswipe, PhotoSwipeUI, createItems(instance), {\n index: 0,\n captionEl: false,\n fullscreenEl: false,\n preloaderEl: false,\n shareEl: false,\n zoomEl: false,\n ...instance.config.photoswipe\n });\n\n instance.photoswipe.listen('afterChange', () => {\n const { items } = instance.config;\n const { getCurrentIndex } = instance.photoswipe;\n\n /* Getting the index to init the image */\n const index = getCurrentIndex();\n\n if (isVideo(items[index].type)) {\n initVideo(index, instance);\n }\n\n /* Image */\n if (isImage(items[index].type)) {\n initImage(index, instance);\n }\n });\n\n /* Clean up from dom on full close */\n instance.photoswipe.listen('destroy', () => {\n /* Dispatch action */\n instance.actions.destroy();\n });\n\n /* Init photoswipe */\n instance.photoswipe.init();\n}\n\n/* Exports */\nmodule.exports = {\n initPhotoswipe\n};\n","/* ==========================================================================\n GalleryRxjs > Client > Image\n ========================================================================== */\n\n/* Modules */\nconst { addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Image = require('../../../../image-rxjs/client/js');\nconst ImageCfg = require('../../../../image-rxjs/client/js/config');\nconst ImageTemplate = require('../../../../image-rxjs/template');\n\nconst configuration = require('../config');\n\n/* Is Image */\nfunction isImage(type = '') {\n return type.toLowerCase() === 'image';\n}\n\n/* Helper to set vertical image */\nfunction setVerticalImage(instance) {\n const { src } = instance.store.select('image');\n\n const image = new Image();\n image.src = src;\n image.onload = function onLoad() {\n if (image.width < image.height) {\n instance.element.classList.add(ImageCfg().css.vertical);\n }\n };\n}\n\n/* Create Image */\nfunction createImage(index, instance) {\n /* Data */\n const { context, items } = instance.config;\n const { mscdn } = context;\n\n /* Template */\n const template = ImageTemplate(\n addData(items[index], {\n type: `${configuration().type.image}-${index}`\n }),\n {\n mscdn\n }\n );\n\n /* Return */\n return template;\n}\n\n/* Init Image */\nfunction initImage(index, instance) {\n const { selector } = instance;\n\n const image = Image(`${selector} [data-component=\"ImageRxjs\"][data-type=\"${configuration().type.image}-${index}\"]`);\n\n setVerticalImage(image);\n}\n\n/* Exports */\nmodule.exports = {\n createImage,\n initImage,\n isImage\n};\n","/* ==========================================================================\n GalleryRxjs > Client > Video\n ========================================================================== */\n\n/* Modules */\nconst { addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst Video = require('../../../../video-rxjs/client/js');\nconst VideoTemplate = require('../../../../video-rxjs/template');\n\nconst configuration = require('../config');\n\n/* Helper type checkers */\nfunction isVideo(type = '') {\n return type.toLowerCase() === 'video';\n}\n\n/* Create Video */\nfunction createVideo(index, instance) {\n /* Data */\n const { items } = instance.config;\n\n /* Template */\n const template = VideoTemplate(\n addData(items[index], {\n type: `${configuration().type.video}-${index}`\n })\n );\n\n /* Return */\n return template;\n}\n\n/* Init Video */\nfunction initVideo(index, instance) {\n const { selector } = instance;\n\n Video(`${selector} [data-component=\"VideoRxjs\"][data-type=\"${configuration().type.video}-${index}\"]`);\n}\n\n/* Exports */\nmodule.exports = {\n createVideo,\n initVideo,\n isVideo\n};\n","/* ==========================================================================\n VideoRxjs > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst config = require('./config');\nconst prototype = require('./prototype');\n/**\n * VideoRxjs component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function VideoRxjs(selector = '[data-component=VideoRxjs]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n if (instance.config.init) instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n VideoRxjs > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst YTPlayer = require('yt-player');\nconst VimeoPlayer = require('@vimeo/player/dist/player.min');\n\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\n/* Providers */\nconst PROVIDER_TYPE = {\n youtube: 'youtube',\n vimeo: 'vimeo'\n};\n\nconst prototype = {\n /* Create player youtube */\n createPlayerYoutube(id) {\n this.player = new YTPlayer(this.element.querySelector('[data-item]'), {\n height: this.config.size.height,\n width: this.config.size.width\n });\n this.player.load(id);\n\n return this;\n },\n /* Create player vimeo */\n createPlayerVimeo(id) {\n this.player = new VimeoPlayer(this.element.querySelector('[data-item]'), {\n id,\n height: this.config.size.height,\n width: this.config.size.width\n });\n\n return this;\n },\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n video: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide()),\n setVideo: config => this.store.dispatch(actions.setVideo(config)),\n createPlayer: config => this.store.dispatch(actions.createPlayer(config))\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean instance */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n this.element.classList.remove(css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n this.element.classList.add(css.hidden);\n }),\n setVideo: this.store.subscribe((state, action) => {\n if (action.type !== types.SET_VIDEO) return;\n\n this.provider = state.video.provider;\n this.id = state.video.id;\n }),\n createPlayer: this.store.subscribe((state, action) => {\n if (action.type !== types.CREATE_PLAYER) return;\n\n /* Exit without provider */\n if (!state.video.provider) return;\n\n /* Player Youtube */\n if (state.video.provider.toLowerCase() === PROVIDER_TYPE.youtube)\n this.createPlayerYoutube(state.video.id);\n\n /* Player Vimeo */\n if (state.video.provider.toLowerCase() === PROVIDER_TYPE.vimeo) this.createPlayerVimeo(state.video.id);\n })\n };\n\n return this;\n },\n start() {\n if (!this.config.start) return this;\n\n this.actions.setVideo({\n id: this.config.id,\n provider: this.config.provider\n });\n\n this.actions.createPlayer();\n\n return this;\n },\n /* Init */\n init() {\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Start */\n this.start();\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n VideoRxjs > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n created: false,\n hidden: false,\n id: '',\n provider: ''\n};\n\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return null;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.SET_VIDEO:\n return {\n ...state,\n id: action.payload.id,\n provider: action.payload.provider\n };\n case types.CREATE_PLAYER:\n return {\n ...state,\n created: true\n };\n default:\n return state;\n }\n}\n\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n VideoRxjs > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\n\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('./client/js/config');\n\nmodule.exports = function Template(data = {}) {\n /* Data */\n const { config = {}, id, provider } = data;\n const { styles = [] } = config;\n\n const { dataType } = prepareDataConfig(config.data);\n\n return html(`\n
    \n
    \n
    `);\n};\n","const resizeConfig = {\n DEFAULT: {\n RESIZE_FIRST: {\n width: 546,\n height: 425,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n },\n\n RESIZE_SHORT: {\n width: 150,\n height: 110,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n },\n\n RESIZE_LARG: {\n width: 150,\n height: 197,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n }\n },\n MQ_1112: {\n RESIZE_FIRST: {\n width: 614,\n height: 314,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n },\n RESIZE_SHORT: {\n width: 200,\n height: 155,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n },\n RESIZE_LARG: {\n width: 250,\n height: 314,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n }\n },\n MQ_1300: {\n RESIZE_FIRST: {\n width: 500,\n height: 310,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n },\n RESIZE_SHORT: {\n width: 135,\n height: 120,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n },\n RESIZE_LARG: {\n width: 222,\n height: 120,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n }\n },\n MQ_1024: {\n RESIZE_FIRST: {\n width: 650,\n height: 274,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n },\n RESIZE_SHORT: {\n width: 160,\n height: 135,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n },\n RESIZE_LARG: {\n width: 200,\n height: 274,\n quality: 80,\n suboperation: 'crop',\n operation: 'resize'\n }\n }\n};\n\nmodule.exports = resizeConfig;\n","/* ==========================================================================\n ShipSection > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n init: true,\n start: true,\n component: 'ShipSection',\n type: {\n image: 'ship-section-image',\n logo: 'ship-section-logo'\n },\n css: {\n gallery: 'ship-section__gallery',\n image: 'ship-section__image',\n imageMod: 'ship-section__image--video'\n },\n imgConfig: {\n width: 700,\n height: 425,\n operation: 'resize',\n suboperation: 'crop',\n quality: '97'\n },\n imgTabletConfig: {\n width: 976,\n height: 250,\n operation: 'resize',\n suboperation: 'crop',\n quality: '97'\n },\n logoConfig: {\n width: 68,\n height: 68\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n AdvantagesPromotions > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst ImageRxjs = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\nconst config = require('./config');\n\n/**\n * AdvantagesPromotions component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function AdvantagesPromotions(selector = '[data-component=AdvantagesPromotions]', configuration = {}) {\n if (elementExist(selector)) {\n const instance = {};\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.promosImg = [...instance.element.querySelectorAll(`${selector} [data-component=\"ImageRxjs\"]`)].map(\n (item, index) => {\n return ImageRxjs(\n `${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.promoImage}-${index}\"]`\n );\n }\n );\n\n return instance;\n }\n};\n","/* ==========================================================================\n AdvantagesPromotions > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'AdvantagesPromotions',\n type: {\n promoImage: 'promotion-image'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n PackageItemSection > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst PackageItem = require('../../../package-item/client/js');\nconst config = require('./config');\n\n/**\n * PackageItemSection component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function PackageItemSection(selector = '[data-component=PackageItemSection]', configuration = {}) {\n if (elementExist(selector)) {\n const instance = {};\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.packages = [...instance.element.querySelectorAll(`${selector} [data-component=\"PackageItem\"]`)].map(\n (item, index) => {\n return PackageItem(`${selector} [data-component=\"PackageItem\"][data-type=\"${config().type}-${index}\"]`);\n }\n );\n\n return instance;\n }\n};\n","/* ==========================================================================\n PackageItem > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * PackageItem component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function PackageItem(selector = '[data-component=PackageItem]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n PackageItem > Client > Prototype\n ========================================================================== */\n\n/* Modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst Button = require('@bluekiri/alexandria-contrib-components/components/button-rxjs/client/js');\n\nconst { filter } = require('rxjs/operators');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { addOrigins, destroyOrigins } = require('./origins');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n package: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n },\n display: () => {\n return this.store.dispatch(actions.display());\n },\n hide: () => {\n return this.store.dispatch(actions.hide());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Remove dom */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n /* Data */\n const { css } = this.config;\n\n this.element.classList.remove(css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n /* Data */\n const { css } = this.config;\n\n this.element.classList.add(css.hidden);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Data */\n const { otherOrigins } = this.config;\n\n if (otherOrigins.length < 1) return this;\n\n /* Init button */\n this.buttonOrigins = Button(`${this.selector} [data-component='ButtonRxjs']`, {\n ...this.config.buttonOrigins\n });\n\n /* Update actions */\n this.actions = {\n ...this.actions,\n closeOrigins: () => {\n return this.store.dispatch(actions.closeOrigins());\n },\n openOrigins: () => {\n return this.store.dispatch(actions.openOrigins());\n }\n };\n\n /* Update reactions */\n this.reactions = {\n ...this.reactions,\n closeOrigins: this.store.subscribe((state, action) => {\n if (action.type !== types.CLOSE_ORIGINS) return;\n\n destroyOrigins(this);\n }),\n openOrigins: this.store.subscribe((state, action) => {\n if (action.type !== types.OPEN_ORIGINS) return;\n\n addOrigins(this, this.buttonOrigins.element);\n })\n };\n\n /* Update subscriptions */\n this.subscriptions.buttonOrigins = this.buttonOrigins.events.click$\n .pipe(\n filter(() => {\n /* Data */\n const { origins } = this.store.select('package');\n\n return !origins;\n })\n )\n .subscribe(event => {\n event.stopPropagation();\n\n /* Dispatch */\n this.actions.openOrigins();\n });\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n PackageItem > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n hidden: false,\n origins: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return state;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.CLOSE_ORIGINS:\n return {\n ...state,\n origins: false\n };\n case types.OPEN_ORIGINS:\n return {\n ...state,\n origins: true\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n PackageItem > Client > Origins\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst TooltipTemplate = require('@bluekiri/alexandria-contrib-components/components/tooltip/template');\nconst Tooltip = require('@bluekiri/alexandria-contrib-components/components/tooltip/client/js');\nconst { addStyle, addData } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst { html } = require('common-tags');\nconst { fromEvent } = require('rxjs');\nconst { filter, take } = require('rxjs/operators');\n\nconst currencySymbols = {\n USD: '$',\n BRL: 'R$',\n GBP: '£',\n EUR: '€',\n MXN: '$',\n RUB: '₽',\n AED: 'AED'\n};\n\n/* Render origin */\nconst renderOrigin = (data, literals, context) => {\n /* Data */\n const { code, name, price = false, url, target } = data;\n\n /* Literals */\n const { departLabel, checkPriceLabel, fromLabel } = literals;\n\n /* Context */\n const { currency } = context;\n\n return html(`\n
  • \n ${departLabel} ${name}\n \n ${\n price\n ? `${fromLabel} ${ViewHelpers(context).formatPrice(price, currency.toUpperCase())}`\n : checkPriceLabel\n }\n \n
  • \n `);\n};\n\n/* Create origins */\nfunction createOrigins(instance) {\n /* Data */\n const { literals, otherOrigins, context, url, target } = instance.config;\n\n /* Literals */\n const { otherOriginsTitle, otherOriginsSubtitle } = literals;\n\n /* Template */\n const content = `\n
    \n

    ${otherOriginsTitle}

    \n

    ${otherOriginsSubtitle}

    \n \n
    \n `;\n\n const { type } = instance.element.dataset;\n const tooltipType = type ? `${instance.config.type.tooltip}-${type}` : instance.config.type.tooltip;\n const template = TooltipTemplate(\n addStyle(\n addData(\n {\n content,\n placement: 'bottom',\n negative: false\n },\n { type: tooltipType }\n ),\n [instance.config.css.tooltip]\n ),\n context\n );\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add origins */\nfunction addOrigins(instance, element) {\n const panel = instance;\n\n /* Node */\n const node = createOrigins(instance);\n\n /* Update reference */\n panel.origins = node;\n\n /* Add to Dom */\n document.body.appendChild(node);\n\n const { type } = instance.element.dataset;\n const tooltipType = type ? `${instance.config.type.tooltip}-${type}` : instance.config.type.tooltip;\n\n panel.tooltip = Tooltip(`[data-component=\"Tooltip\"][data-type=\"${tooltipType}\"]`, {\n trigger: element\n });\n\n /* Event on document to close origins */\n fromEvent(document, 'click')\n .pipe(\n filter(event => !event.target.closest('[data-package-origins]')),\n take(1)\n )\n .subscribe(() => {\n /* Dispatch action */\n instance.actions.closeOrigins();\n });\n}\n\n/* Destroy origins */\nfunction destroyOrigins(instance) {\n const panel = instance;\n\n instance.origins.parentNode.removeChild(instance.origins);\n delete panel.origins;\n}\n\n/* Exports */\nmodule.exports = {\n addOrigins,\n destroyOrigins\n};\n","/* ==========================================================================\n PackageItem > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'PackageItem',\n init: true,\n start: true,\n icon: {\n angleRight: 'angle-right'\n },\n type: {\n tooltip: 'package-item-tooltip'\n },\n css: {\n petitionMod: 'package-item--petition',\n hidden: 'is-hidden',\n visible: 'is-visible',\n top: 'is-top',\n bottom: 'is-bottom',\n tooltip: 'package-item--tooltip'\n },\n imgConfig: {\n operation: 'resize',\n suboperation: 'crop',\n width: 550,\n height: 140,\n quality: 90\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n PackageItemSection > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'PackageItemSection',\n type: 'packages',\n idAnchor: 'AnchorFlightHotel',\n css: {\n simple: 'package-item-section--simple',\n two: 'package-item-section--two'\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n BannersMask > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst ImageRxjs = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * BannersMask component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function BannersMask(selector = '[data-component=BannersMask]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n instance.images = [...instance.element.querySelectorAll(`${selector} [data-component=\"ImageRxjs\"]`)].map(\n (item, index) => {\n return ImageRxjs(\n `${selector} [data-component=\"ImageRxjs\"][data-type=\"${config().type.image}-${index}\"]`\n );\n }\n );\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n BannersMask > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n /* Start logic */\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n BannersMask > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n BannersMask > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'BannersMask',\n init: true,\n start: true,\n css: {\n image: 'banners-mask__image'\n },\n type: {\n image: 'image-banner'\n },\n imgConfig: {\n height: 250,\n width: 470\n }\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n ToastAsync > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * ToastAsync component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function ToastAsync(selector = '[data-component=ToastAsync]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n ToastAsync > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { take } = require('rxjs/operators');\n\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst Services = require('../../../../services/models');\n\nconst { addToast } = require('./toast');\n\n/* Prototype */\nconst prototype = {\n /* Setup store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n data: reducer\n });\n\n return this;\n },\n /* Setup actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => {\n return this.store.dispatch(actions.destroy());\n }\n };\n\n return this;\n },\n /* Setup reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n [...Object.keys(this.reactions)].forEach(key => this.reactions[key].unsubscribe());\n\n /* Clean DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean reference */\n [...Object.keys(this)].forEach(key => delete this[key]);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n\n this.subscriptions = {};\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Start */\n start() {\n if (!this.config.start) return this;\n\n const { context } = this.config;\n const { getToasts } = this.config.endpoints;\n\n /* Get new data */\n Services(context)\n .getModel(getToasts)\n .pipe(take(1))\n .subscribe(data => {\n if (!data) {\n return;\n }\n\n /* Prices Min */\n addToast(this, data);\n });\n\n return this;\n },\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n\n /* Start */\n this.start();\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n ToastAsync > Client > Store > Reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n ToastAsync > Client > Toast\n ========================================================================== */\n\n/* Modules */\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst ToastTempalte = require('@bluekiri/alexandria-contrib-components/components/toast/template');\nconst Toast = require('@bluekiri/alexandria-contrib-components/components/toast/client/js');\n\n/* Create */\nfunction createToast(instance, data) {\n /* Context */\n const { context } = instance.config;\n\n /* Template */\n const template = ToastTempalte(data, context);\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\n/* Add */\nfunction addToast(instance, data) {\n /* Panel */\n const panel = instance;\n\n /* Node */\n const node = createToast(instance, data);\n\n /* Add to DOM */\n instance.element.appendChild(node);\n\n /* Init */\n panel.toast = Toast(`${instance.selector} [data-component=Toast]`);\n}\n\nmodule.exports = {\n addToast\n};\n","/* ==========================================================================\n Toast > Template\n ========================================================================== */\n\n/* Import modules */\nconst { html } = require('common-tags');\nconst { prepareDataConfig } = require('@bluekiri/alexandria/helpers/dataHelpers');\n\nconst configuration = require('./client/js/config');\n\n/**\n * MBanner component\n * @param {object} data Object containing the data model for this component.\n * @returns {object} Additional data to have available in the template\n */\nmodule.exports = function MBannerPakRxjs(data) {\n /* Data */\n const { config = {}, items = [] } = data;\n const { styles = [] } = config;\n const { dataType } = prepareDataConfig(config.data);\n\n return html(`\n
    \n `);\n};\n","/* ==========================================================================\n Toast > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * Toast component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function Toast(selector = '[data-component=Toast]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Hooks */\n instance.hooks = {\n header: instance.element\n };\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Toast */\n instance.toasts = [];\n\n /* Init */\n if (instance.config.init) instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n Toast > Client > Prototype\n ========================================================================== */\n\nconst { Store } = require('@bluekiri/alexandria/helpers/state');\n\nconst { interval } = require('rxjs');\nconst { take } = require('rxjs/operators');\n\nconst { actions, types } = require('./store/actions');\nconst { reducer } = require('./store/reducer');\n\nconst { addToast, destroyToast } = require('./toast');\n\n/* Prototype */\nconst prototype = {\n /* Setup Store */\n setupStore() {\n if (this.store) return this;\n\n this.store = new Store({\n toast: reducer\n });\n\n return this;\n },\n /* Setup Actions */\n setupActions() {\n if (this.actions) return this;\n\n this.actions = {\n destroy: () => this.store.dispatch(actions.destroy()),\n display: () => this.store.dispatch(actions.display()),\n hide: () => this.store.dispatch(actions.hide()),\n enable: index => this.store.dispatch(actions.enable(index)),\n disable: indexes => this.store.dispatch(actions.disable(indexes))\n };\n\n return this;\n },\n /* Setup Reactions */\n setupReactions() {\n if (this.reactions) return this;\n\n this.reactions = {\n destroy: this.store.subscribe((state, action) => {\n if (action.type !== types.DESTROY) return;\n\n /* Unsubscribe */\n this.unsubscribe();\n\n /* Remove from DOM */\n this.element.parentNode.removeChild(this.element);\n\n /* Clean instance */\n [...Object.keys(this)].forEach(key => delete this[key]);\n }),\n display: this.store.subscribe((state, action) => {\n if (action.type !== types.DISPLAY) return;\n\n const { css } = this.config;\n this.element.classList.remove(css.hidden);\n }),\n hide: this.store.subscribe((state, action) => {\n if (action.type !== types.HIDE) return;\n\n const { css } = this.config;\n\n this.element.classList.add(css.hidden);\n }),\n enable: this.store.subscribe((state, action) => {\n if (action.type !== types.ENABLE) return;\n\n addToast(this, action.payload);\n }),\n disable: this.store.subscribe((state, action) => {\n if (action.type !== types.DISABLE) return;\n\n /* Destroy toast */\n destroyToast(this);\n })\n };\n\n return this;\n },\n /* Subscribe */\n subscribe() {\n if (this.subscriptions) this.unsubscribe();\n const { items, intervalsOpen } = this.config;\n\n this.height = 0;\n this.subscriptions = {\n timeOut$: interval(intervalsOpen)\n .pipe(take(items.length))\n .subscribe({\n next: x => {\n this.actions.enable(x);\n },\n complete: () => {\n this.actions.disable();\n }\n })\n };\n\n return this;\n },\n /* Unsubscribe */\n unsubscribe() {\n if (!this.subscriptions) return this;\n\n [...Object.keys(this.subscriptions)].forEach(key => this.subscriptions[key].unsubscribe());\n\n return this;\n },\n /* Init */\n init() {\n /* Setup store */\n this.setupStore();\n\n /* Setup actions */\n this.setupActions();\n\n /* Setup reactions */\n this.setupReactions();\n\n /* Subscribe */\n this.subscribe();\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n Toast > Client > Store > reducer\n ========================================================================== */\n\n/* Modules */\nconst { types } = require('./actions');\n\n/* Initial state */\nconst initialState = {\n active: false,\n hidden: false,\n disabled: false\n};\n\n/* Reducer */\nfunction reducer(state = initialState, action) {\n switch (action.type) {\n case types.DESTROY:\n return null;\n case types.DISPLAY:\n return {\n ...state,\n hidden: false\n };\n case types.ENABLE:\n return {\n ...state,\n disabled: true,\n enable: action.payload\n };\n case types.DISABLE:\n return {\n ...state,\n disabled: false,\n disable: action.payload\n };\n case types.HIDE:\n return {\n ...state,\n hidden: true\n };\n case types.CLOSE:\n return {\n ...state\n };\n default:\n return state;\n }\n}\n\n/* Exports */\nmodule.exports = {\n reducer\n};\n","/* ==========================================================================\n Toast > Client > Store > actions\n ========================================================================== */\n\n/* Types */\nconst { html } = require('common-tags');\nconst { interval, fromEvent } = require('rxjs');\n\nconst { take } = require('rxjs/operators');\n\nconst { randomId } = require('@bluekiri/alexandria/helpers/dataHelpers');\nconst ViewHelpers = require('@bluekiri/alexandria/core/ViewHelpers');\n\nconst { toNode } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst { actions } = require('../store/actions');\n\nconst configuration = require('../config');\n\n/* Create Icon checkbox */\nfunction createToast(instance, index) {\n /* Data */\n const { type, context, items, iconName } = instance.config;\n const item = items[index];\n\n /* Template */\n const template = html(\n `
    \n
    ${item.icon ? ViewHelpers(context).icon(item.icon) : ''}
    \n
    ${ViewHelpers().markdown(item.label)}
    \n
    ${ViewHelpers().icon(iconName)}
    \n
    `\n );\n\n /* Node */\n const node = toNode(template)[0];\n\n /* Return */\n return node;\n}\n\nfunction addToast(instance, index) {\n /* Instance */\n const panel = instance;\n\n /* Create nodes */\n const node = createToast(instance, index);\n\n /* Process Nodes */\n panel.hooks.header.appendChild(node);\n panel.toasts.push(node);\n\n /* Add class fadeIn */\n node.classList.add(configuration().css.fadeIn);\n\n /**\n * Update actions, reactions, subscriptions\n */\n panel.actions = {\n ...panel.actions,\n close: () => instance.store.dispatch(actions.close())\n };\n\n panel.subscriptions = {\n ...panel.subscriptions,\n close: fromEvent(panel.toasts[index].querySelector('[data-cancel]'), 'click').subscribe(() => {\n /* Dispatch action */\n const { css } = panel.config;\n\n const currentToast = panel.toasts[index];\n currentToast.classList.add(css.fadeOut);\n\n setTimeout(() => {\n currentToast.parentNode.removeChild(currentToast);\n }, 600);\n })\n };\n}\n\nfunction destroyToast(instance) {\n /* Reference */\n const panel = instance;\n\n const { items, intervalsClose } = panel.config;\n\n interval(intervalsClose)\n .pipe(take(items.length))\n .subscribe({\n next: x => {\n const currentToast = panel.toasts[x];\n\n currentToast.classList.remove(configuration().css.fadeIn);\n currentToast.classList.add(configuration().css.fadeOut);\n\n setTimeout(() => {\n currentToast.parentNode.removeChild(currentToast);\n }, 600);\n }\n });\n\n return panel;\n}\n\n/* Export */\nmodule.exports = {\n addToast,\n destroyToast\n};\n","/* ==========================================================================\n ToastAsync > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'ToastAsync',\n init: true,\n start: true,\n css: {},\n type: {}\n};\n\nmodule.exports = () => config;\n","/* ==========================================================================\n InformationCarousel > Client\n ========================================================================== */\n\n/* Import modules */\nconst { elementExist } = require('@bluekiri/alexandria/helpers/domHelpers');\n\nconst prototype = require('./prototype');\nconst config = require('./config');\n\n/**\n * InformationCarousel component\n * @param {selector} String selector for the component in the client side.\n */\nmodule.exports = function InformationCarousel(selector = '[data-component=InformationCarousel]', configuration = {}) {\n if (elementExist(selector)) {\n /* Instance */\n const instance = Object.create(prototype);\n\n /* Selector */\n instance.selector = selector;\n\n /* Element */\n instance.element = document.querySelector(selector);\n\n /* Config */\n instance.config = {\n ...config(),\n ...configuration,\n ...(function getConfig() {\n if (!instance.element.dataset.config) return '';\n\n const result = JSON.parse(instance.element.dataset.config);\n instance.element.dataset.config = '';\n return result;\n })()\n };\n\n /* Init */\n instance.init();\n\n /* Return */\n return instance;\n }\n};\n","/* ==========================================================================\n InformationCarousel > Client > Prototype\n ========================================================================== */\n\n/* Import modules */\nconst { initCarousel } = require('./carousel');\nconst { initImage } = require('./image');\n\n/* Prototype */\nconst prototype = {\n /* Init */\n init() {\n if (!this.config.init) return this;\n\n /* Init carousel */\n initCarousel(this);\n\n /* Init image */\n initImage(this);\n\n return this;\n }\n};\n\n/* Exports */\nmodule.exports = prototype;\n","/* ==========================================================================\n InformationCarousel > Client > Carousel\n ========================================================================== */\n\n/* Modules */\nconst Carousel = require('@bluekiri/alexandria-contrib-components/components/carousel-rxjs/client/js');\n\n/* Init carousel */\nfunction initCarousel(instance) {\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n /* Carousel */\n panel.carousel = Carousel(`${selector} [data-component=\"CarouselRxjs\"]`, {\n hasPagination: true,\n hasNavigation: true,\n hasAutoplay: false,\n hasBreakpoints: true,\n swiper: {\n slidesPerView: 3,\n slidesPerGroup: 3,\n centeredSlides: false,\n watchSlidesVisibility: true,\n loop: false,\n spaceBetween: 0,\n breakpoints: {\n 768: {\n slidesPerView: 2,\n slidesPerGroup: 2\n }\n }\n }\n });\n}\n\n/* Exports */\nmodule.exports = {\n initCarousel\n};\n","/* ==========================================================================\n InformationCarousel > Client > Image\n ========================================================================== */\n\n/* Modules */\nconst Image = require('@bluekiri/alexandria-contrib-components/components/image-rxjs/client/js');\n\n/* Init image */\nfunction initImage(instance) {\n const panel = instance;\n\n /* Data */\n const { selector } = instance;\n\n /* Image */\n panel.Image = Image(`${selector} [data-component=\"ImageRxjs\"]`);\n}\n\n/* Exports */\nmodule.exports = {\n initImage\n};\n","/* ==========================================================================\n InformationCarousel > Client > Config\n ========================================================================== */\n\n/* Import modules */\n\n/* Config */\nconst config = {\n component: 'InformationCarousel',\n init: true,\n css: {\n single: 'information-carousel__single',\n two: 'information-carousel__two'\n },\n type: {},\n logoConfig: {\n width: 64,\n height: 64\n }\n};\n\nmodule.exports = () => config;\n","export function getXHRResponse(xhr) {\n switch (xhr.responseType) {\n case 'json': {\n if ('response' in xhr) {\n return xhr.response;\n }\n else {\n var ieXHR = xhr;\n return JSON.parse(ieXHR.responseText);\n }\n }\n case 'document':\n return xhr.responseXML;\n case 'text':\n default: {\n if ('response' in xhr) {\n return xhr.response;\n }\n else {\n var ieXHR = xhr;\n return ieXHR.responseText;\n }\n }\n }\n}\n//# sourceMappingURL=getXHRResponse.js.map","import { getXHRResponse } from './getXHRResponse';\nvar AjaxResponse = (function () {\n function AjaxResponse(originalEvent, xhr, request, type) {\n if (type === void 0) { type = 'download_load'; }\n this.originalEvent = originalEvent;\n this.xhr = xhr;\n this.request = request;\n this.type = type;\n var status = xhr.status, responseType = xhr.responseType;\n this.status = status !== null && status !== void 0 ? status : 0;\n this.responseType = responseType !== null && responseType !== void 0 ? responseType : '';\n var allHeaders = xhr.getAllResponseHeaders();\n this.responseHeaders = allHeaders\n ?\n allHeaders.split('\\n').reduce(function (headers, line) {\n var index = line.indexOf(': ');\n headers[line.slice(0, index)] = line.slice(index + 2);\n return headers;\n }, {})\n : {};\n this.response = getXHRResponse(xhr);\n var loaded = originalEvent.loaded, total = originalEvent.total;\n this.loaded = loaded;\n this.total = total;\n }\n return AjaxResponse;\n}());\nexport { AjaxResponse };\n//# sourceMappingURL=AjaxResponse.js.map","import { getXHRResponse } from './getXHRResponse';\nimport { createErrorClass } from '../util/createErrorClass';\nexport var AjaxError = createErrorClass(function (_super) {\n return function AjaxErrorImpl(message, xhr, request) {\n this.message = message;\n this.name = 'AjaxError';\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType;\n var response;\n try {\n response = getXHRResponse(xhr);\n }\n catch (err) {\n response = xhr.responseText;\n }\n this.response = response;\n };\n});\nexport var AjaxTimeoutError = (function () {\n function AjaxTimeoutErrorImpl(xhr, request) {\n AjaxError.call(this, 'ajax timeout', xhr, request);\n this.name = 'AjaxTimeoutError';\n return this;\n }\n AjaxTimeoutErrorImpl.prototype = Object.create(AjaxError.prototype);\n return AjaxTimeoutErrorImpl;\n})();\n//# sourceMappingURL=errors.js.map","import { __assign } from \"tslib\";\nimport { map } from '../operators/map';\nimport { Observable } from '../Observable';\nimport { AjaxResponse } from './AjaxResponse';\nimport { AjaxTimeoutError, AjaxError } from './errors';\nfunction ajaxGet(url, headers) {\n return ajax({ method: 'GET', url: url, headers: headers });\n}\nfunction ajaxPost(url, body, headers) {\n return ajax({ method: 'POST', url: url, body: body, headers: headers });\n}\nfunction ajaxDelete(url, headers) {\n return ajax({ method: 'DELETE', url: url, headers: headers });\n}\nfunction ajaxPut(url, body, headers) {\n return ajax({ method: 'PUT', url: url, body: body, headers: headers });\n}\nfunction ajaxPatch(url, body, headers) {\n return ajax({ method: 'PATCH', url: url, body: body, headers: headers });\n}\nvar mapResponse = map(function (x) { return x.response; });\nfunction ajaxGetJSON(url, headers) {\n return mapResponse(ajax({\n method: 'GET',\n url: url,\n headers: headers,\n }));\n}\nexport var ajax = (function () {\n var create = function (urlOrConfig) {\n var config = typeof urlOrConfig === 'string'\n ? {\n url: urlOrConfig,\n }\n : urlOrConfig;\n return fromAjax(config);\n };\n create.get = ajaxGet;\n create.post = ajaxPost;\n create.delete = ajaxDelete;\n create.put = ajaxPut;\n create.patch = ajaxPatch;\n create.getJSON = ajaxGetJSON;\n return create;\n})();\nvar UPLOAD = 'upload';\nvar DOWNLOAD = 'download';\nvar LOADSTART = 'loadstart';\nvar PROGRESS = 'progress';\nvar LOAD = 'load';\nexport function fromAjax(init) {\n return new Observable(function (destination) {\n var _a, _b;\n var config = __assign({ async: true, crossDomain: false, withCredentials: false, method: 'GET', timeout: 0, responseType: 'json' }, init);\n var queryParams = config.queryParams, configuredBody = config.body, configuredHeaders = config.headers;\n var url = config.url;\n if (!url) {\n throw new TypeError('url is required');\n }\n if (queryParams) {\n var searchParams_1;\n if (url.includes('?')) {\n var parts = url.split('?');\n if (2 < parts.length) {\n throw new TypeError('invalid url');\n }\n searchParams_1 = new URLSearchParams(parts[1]);\n new URLSearchParams(queryParams).forEach(function (value, key) { return searchParams_1.set(key, value); });\n url = parts[0] + '?' + searchParams_1;\n }\n else {\n searchParams_1 = new URLSearchParams(queryParams);\n url = url + '?' + searchParams_1;\n }\n }\n var headers = {};\n if (configuredHeaders) {\n for (var key in configuredHeaders) {\n if (configuredHeaders.hasOwnProperty(key)) {\n headers[key.toLowerCase()] = configuredHeaders[key];\n }\n }\n }\n var crossDomain = config.crossDomain;\n if (!crossDomain && !('x-requested-with' in headers)) {\n headers['x-requested-with'] = 'XMLHttpRequest';\n }\n var withCredentials = config.withCredentials, xsrfCookieName = config.xsrfCookieName, xsrfHeaderName = config.xsrfHeaderName;\n if ((withCredentials || !crossDomain) && xsrfCookieName && xsrfHeaderName) {\n var xsrfCookie = (_b = (_a = document === null || document === void 0 ? void 0 : document.cookie.match(new RegExp(\"(^|;\\\\s*)(\" + xsrfCookieName + \")=([^;]*)\"))) === null || _a === void 0 ? void 0 : _a.pop()) !== null && _b !== void 0 ? _b : '';\n if (xsrfCookie) {\n headers[xsrfHeaderName] = xsrfCookie;\n }\n }\n var body = extractContentTypeAndMaybeSerializeBody(configuredBody, headers);\n var _request = __assign(__assign({}, config), { url: url,\n headers: headers,\n body: body });\n var xhr;\n xhr = init.createXHR ? init.createXHR() : new XMLHttpRequest();\n {\n var progressSubscriber_1 = init.progressSubscriber, _c = init.includeDownloadProgress, includeDownloadProgress = _c === void 0 ? false : _c, _d = init.includeUploadProgress, includeUploadProgress = _d === void 0 ? false : _d;\n var addErrorEvent = function (type, errorFactory) {\n xhr.addEventListener(type, function () {\n var _a;\n var error = errorFactory();\n (_a = progressSubscriber_1 === null || progressSubscriber_1 === void 0 ? void 0 : progressSubscriber_1.error) === null || _a === void 0 ? void 0 : _a.call(progressSubscriber_1, error);\n destination.error(error);\n });\n };\n addErrorEvent('timeout', function () { return new AjaxTimeoutError(xhr, _request); });\n addErrorEvent('abort', function () { return new AjaxError('aborted', xhr, _request); });\n var createResponse_1 = function (direction, event) {\n return new AjaxResponse(event, xhr, _request, direction + \"_\" + event.type);\n };\n var addProgressEvent_1 = function (target, type, direction) {\n target.addEventListener(type, function (event) {\n destination.next(createResponse_1(direction, event));\n });\n };\n if (includeUploadProgress) {\n [LOADSTART, PROGRESS, LOAD].forEach(function (type) { return addProgressEvent_1(xhr.upload, type, UPLOAD); });\n }\n if (progressSubscriber_1) {\n [LOADSTART, PROGRESS].forEach(function (type) { return xhr.upload.addEventListener(type, function (e) { var _a; return (_a = progressSubscriber_1 === null || progressSubscriber_1 === void 0 ? void 0 : progressSubscriber_1.next) === null || _a === void 0 ? void 0 : _a.call(progressSubscriber_1, e); }); });\n }\n if (includeDownloadProgress) {\n [LOADSTART, PROGRESS].forEach(function (type) { return addProgressEvent_1(xhr, type, DOWNLOAD); });\n }\n var emitError_1 = function (status) {\n var msg = 'ajax error' + (status ? ' ' + status : '');\n destination.error(new AjaxError(msg, xhr, _request));\n };\n xhr.addEventListener('error', function (e) {\n var _a;\n (_a = progressSubscriber_1 === null || progressSubscriber_1 === void 0 ? void 0 : progressSubscriber_1.error) === null || _a === void 0 ? void 0 : _a.call(progressSubscriber_1, e);\n emitError_1();\n });\n xhr.addEventListener(LOAD, function (event) {\n var _a, _b;\n var status = xhr.status;\n if (status < 400) {\n (_a = progressSubscriber_1 === null || progressSubscriber_1 === void 0 ? void 0 : progressSubscriber_1.complete) === null || _a === void 0 ? void 0 : _a.call(progressSubscriber_1);\n var response = void 0;\n try {\n response = createResponse_1(DOWNLOAD, event);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n destination.next(response);\n destination.complete();\n }\n else {\n (_b = progressSubscriber_1 === null || progressSubscriber_1 === void 0 ? void 0 : progressSubscriber_1.error) === null || _b === void 0 ? void 0 : _b.call(progressSubscriber_1, event);\n emitError_1(status);\n }\n });\n }\n var user = _request.user, method = _request.method, async = _request.async;\n if (user) {\n xhr.open(method, url, async, user, _request.password);\n }\n else {\n xhr.open(method, url, async);\n }\n if (async) {\n xhr.timeout = _request.timeout;\n xhr.responseType = _request.responseType;\n }\n if ('withCredentials' in xhr) {\n xhr.withCredentials = _request.withCredentials;\n }\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n if (body) {\n xhr.send(body);\n }\n else {\n xhr.send();\n }\n return function () {\n if (xhr && xhr.readyState !== 4) {\n xhr.abort();\n }\n };\n });\n}\nfunction extractContentTypeAndMaybeSerializeBody(body, headers) {\n var _a;\n if (!body ||\n typeof body === 'string' ||\n isFormData(body) ||\n isURLSearchParams(body) ||\n isArrayBuffer(body) ||\n isFile(body) ||\n isBlob(body) ||\n isReadableStream(body)) {\n return body;\n }\n if (isArrayBufferView(body)) {\n return body.buffer;\n }\n if (typeof body === 'object') {\n headers['content-type'] = (_a = headers['content-type']) !== null && _a !== void 0 ? _a : 'application/json;charset=utf-8';\n return JSON.stringify(body);\n }\n throw new TypeError('Unknown body type');\n}\nvar _toString = Object.prototype.toString;\nfunction toStringCheck(obj, name) {\n return _toString.call(obj) === \"[object \" + name + \"]\";\n}\nfunction isArrayBuffer(body) {\n return toStringCheck(body, 'ArrayBuffer');\n}\nfunction isFile(body) {\n return toStringCheck(body, 'File');\n}\nfunction isBlob(body) {\n return toStringCheck(body, 'Blob');\n}\nfunction isArrayBufferView(body) {\n return typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView(body);\n}\nfunction isFormData(body) {\n return typeof FormData !== 'undefined' && body instanceof FormData;\n}\nfunction isURLSearchParams(body) {\n return typeof URLSearchParams !== 'undefined' && body instanceof URLSearchParams;\n}\nfunction isReadableStream(body) {\n return typeof ReadableStream !== 'undefined' && body instanceof ReadableStream;\n}\n//# sourceMappingURL=ajax.js.map"],"sourceRoot":""}